--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Commit 4e583770e5bacd43ba12e299bcd92000da73acbb
Parents : f9b6dc2
Author : Mark Qvist <bc7291552be7a58f361522990465165c>
Date : 2026-05-05T00:57:26+02:00
Updated docs
Changes
30 files changed, 1565 insertions(+), 748 deletions(-)
Diff
diff --git a/docs/Reticulum Manual.epub b/docs/Reticulum Manual.epub
index 60645138..1ee4d75a 100644
Binary files a/docs/Reticulum Manual.epub and b/docs/Reticulum Manual.epub differ
diff --git a/docs/Reticulum Manual.pdf b/docs/Reticulum Manual.pdf
index a0257c15..36281a8e 100644
Binary files a/docs/Reticulum Manual.pdf and b/docs/Reticulum Manual.pdf differ
diff --git a/docs/manual/.buildinfo b/docs/manual/.buildinfo
index 09f7f786..f8dc03b0 100644
--- a/docs/manual/.buildinfo
+++ b/docs/manual/.buildinfo
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: 30a85b1d5fe4a94e60d7f412c97b4772
+config: 7f24c66053dcd3623245c5f317b94800
tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/docs/manual/_sources/git.rst.txt b/docs/manual/_sources/git.rst.txt
new file mode 100644
index 00000000..e6392caa
--- /dev/null
+++ b/docs/manual/_sources/git.rst.txt
@@ -0,0 +1,404 @@
+.. _git-main:
+
+************************
+Using Git Over Reticulum
+************************
+
+A set of utilities for distributed collaborative software development and publishing is included in RNS.
+
+The system consists of two parts: The ``rngit`` node that hosts repositories, and the ``git-remote-rns`` helper that enables Git to communicate with rngit nodes. As soon as you have RNS installed on your system, you can transparently use Git with Reticulum-hosted repositories just like any other type of remote. Git over Reticulum uses URLs in the following format: ``rns://DESTINATION_HASH/group/repo``.
+
+If you set a branch to track a Reticulum remote as the default upstream, you can simply use ``git`` as you normally would; all commands work transparently and as expected.
+
+.. warning::
+ **The rngit program is a new addition to RNS!** This functionality was introduced in RNS 1.2.0. While great care has been taken to design a secure, but highly configurable and flexible permission system for allowing many users to interact with many different repositories on a single node, ``rngit`` has not been tested extensively in the wild! Be careful when hosting repositories, especially if they are public or semi-public.
+
+The rngit Utility
+=================
+
+The ``rngit`` utility provides full Git repository hosting and interaction over Reticulum. It allows you to host and manage Git repositories and releases on Reticulum nodes, and to interact with remote repositories using standard Git commands through the ``rns://`` URL scheme.
+
+**Usage Examples**
+
+Run ``rngit`` to start a repository node:
+
+.. code:: text
+
+ $ rngit
+
+ [Notice] Starting Reticulum Git Node...
+ [Notice] Reticulum Git Node listening on <0d7334d411d00120cbad24edf355fdd2>
+
+On the first run, ``rngit`` will create a default configuration file. You will then need to edit this, to point to your repository locations, configure access permissions, and perform any other necessary configuration.
+
+View your identity and destination hashes:
+
+.. code:: text
+
+ $ rngit --print-identity
+
+ Git Peer Identity : <959e10e5efc1bd9d97a4083babe51dea>
+ Repository Node Identity : <153cb870b4665b8c1c348896292b0bad>
+ Repositories Destination : <0d7334d411d00120cbad24edf355fdd2>
+
+If the page server is enabled, the output will also include the Nomad Network destination hash.
+
+You can run ``rngit`` in service mode with logging to file:
+
+.. code:: text
+
+ $ rngit -s
+
+Clone a repository from a remote ``rngit`` node:
+
+.. code:: text
+
+ $ git clone rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
+
+Add a Reticulum remote to an existing repository:
+
+.. code:: text
+
+ $ git remote add some_remote rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
+
+Push changes to the Reticulum remote:
+
+.. code:: text
+
+ $ git push some_remote master
+
+Get changes from a remote repository:
+
+.. code:: text
+
+ $ git pull rns_remote master
+
+**All Command-Line Options (rngit)**
+
+.. code:: text
+
+ usage: rngit.py [-h] [--config CONFIG] [--rnsconfig RNSCONFIG] [-s] [-i] [-v]
+ [-q] [--version]
+
+ Reticulum Git Repository Node
+
+ options:
+ -h, --help show this help message and exit
+ --config CONFIG path to alternative config directory
+ --rnsconfig RNSCONFIG
+ path to alternative Reticulum config directory
+ -p, --print-identity print identity and destination info and exit
+ -s, --service rngit is running as a service and should log to file
+ -i, --interactive drop into interactive shell after initialisation
+ -v, --verbose increase verbosity
+ -q, --quiet decrease verbosity
+ --version show program's version number and exit
+
+**All Command-Line Options (git-remote-rns)**
+
+The ``git-remote-rns`` helper is automatically invoked by Git when interacting with ``rns://`` URLs. It is not typically run directly by users, but accepts the following environment variables for configuration:
+
+- ``RNGIT_CONFIG`` - Path to alternative client configuration directory
+- ``RNS_CONFIG`` - Path to alternative Reticulum configuration directory
+
+The client configuration file is located at ``~/.rngit/client_config`` and allows adjusting parameters such as the reference batch size for transfers.
+
+
+Repository Structure
+====================
+
+The ``rngit`` node organizes repositories into groups. Each group is a directory containing bare Git repositories. The repository path format is ``group_name/repo_name``. For example, a repository at ``/var/git/public/myrepo`` would be accessible as ``public/myrepo`` via the URL ``rns://DESTINATION_HASH/public/myrepo``.
+
+**Configuration**
+
+The ``rngit`` node configuration file is located at ``~/.rngit/config`` (or ``/etc/rngit/config`` for system-wide installations). The default configuration includes:
+
+- Repository group paths defining where to find bare repositories
+- Access permissions for groups and individual repositories
+- Announce intervals for network visibility
+- Optional statistics recording for repository activity
+
+Access permissions can be configured at the group level in the config file, or per-repository using ``.allowed`` files. Permissions use the format ``permission:target`` where permission is ``r`` (read), ``w`` (write), ``rw`` (read/write), ``c`` (create) or ``s`` (stats) and target is ``all``, ``none``, or a specific identity hash.
+
+The ``s`` (stats) permission allows viewing repository activity statistics, including views, fetches and pushes over time. To enable statistics recording, set ``record_stats = yes`` in the ``[rngit]`` section of the configuration file. You can also exclude specific identities from statistics by adding their hashes to ``stats_ignore_identities``.
+
+Repository-specific ``.allowed`` files can be static text files or executable scripts that output permission rules to stdout. A ``group.allowed`` file in a repository group directory applies to all repositories within that group.
+
+Serving Pages Over Nomad Network
+================================
+
+In addition to providing Git repository access via the Git remote helper protocol, ``rngit`` can also run a `Nomad Network <https://github.com/markqvist/nomadnet>`_ compatible page node. This allows users to browse repository information, view file contents, inspect commit history and access repository statistics through any Nomad Network client.
+
+When enabled, the page node provides a complete interface to your repositories, with automatic Markdown to Micron conversion, syntax-highlighted code browsing, and detailed commit, diff and statistics views.
+
+**Enabling the Git Page Node**
+
+To enable the page node, add the following to your ``~/.rngit/config`` file:
+
+.. code:: text
+
+ [pages]
+ serve_nomadnet = yes
+
+When the page node is enabled, ``rngit`` will listen on a Nomad Network node destination in addition to the Git repository destination. You can view the destination hash by running:
+
+.. code:: text
+
+ $ rngit --print-identity
+
+ Git Peer Identity : <959e10e5efc1bd9d97a4083babe51dea>
+ Repository Node Identity : <153cb870b4665b8c1c348896292b0bad>
+ Repositories Destination : <0d7334d411d00120cbad24edf355fdd2>
+ Nomad Network Destination : <50824b711717f97c2fb1166ceddd5ea9>
+
+**Accessing Repository Pages**
+
+Once the page server is running, you can access it from any Nomad Network client by connecting to the Nomad Network destination. The page node provides the following views:
+
+- **Front Page** - Lists all repository groups accessible to your identity
+- **Group Page** - Shows all repositories within a group
+- **Repository Page** - Displays repository overview, description and README
+- **Releases** - List of releases for the repository, with information and downloads
+- **File Browser** - Browse directory trees and view and download file contents
+- **Commits View** - View commit history with pagination
+- **Commit Details** - Detailed commit information with file changes and diffs
+- **Refs View** - List branches and tags
+- **Statistics** - Activity charts showing views, fetches and pushes over time
+
+All pages respect the same permission system used for Git access. If an identity does not have read access to a repository, they will not be able to view its pages.
+
+Formatting & Syntax Highlighting
+================================
+
+If the ``pygments`` Python module is installed on your system, the page server will automatically apply syntax highlighting to code files. The highlighting supports a wide range of programming languages and uses a color theme optimized for terminal display.
+
+To enable syntax highlighting, install pygments:
+
+.. code:: text
+
+ pip install pygments
+
+**Markdown & Micron Support**
+
+README files and other Markdown documents are automatically converted to Micron markup for display in Nomad Network clients. You can also write your README files directly in Micron, in which case they will display and render as such in any Nomad Network client. The file browser also supports viewing both rendered and raw Markdown and Micron documents.
+
+Code blocks in Markdown can include language hints for syntax highlighting:
+
+.. code:: text
+
+ ```python
+ def hello_world():
+ print("Hello, Reticulum!")
+ ```
+
+Customizing Templates
+=====================
+
+The page server uses a template system that allows complete customization of the generated pages. Templates are stored in the ``~/.rngit/templates/`` directory as Micron files.
+
+The following template files are supported:
+
+- ``base.mu`` - Base template wrapping all pages
+- ``front.mu`` - Front page listing all groups
+- ``group.mu`` - Group page listing repositories
+- ``repo.mu`` - Repository overview page
+- ``releases.mu`` - Release list page
+- ``release.mu`` - Release details page
+- ``tree.mu`` - File browser pages
+- ``blob.mu`` - File content display
+- ``commits.mu`` - Commit history listing
+- ``commit.mu`` - Individual commit detail page
+- ``refs.mu`` - Branches and tags listing
+- ``stats.mu`` - Statistics page
+
+Templates can include the following variables:
+
+- ``{PAGE_CONTENT}`` - The main content of the page (required)
+- ``{NODE_NAME}`` - The configured node name
+- ``{NAVIGATION}`` - Breadcrumb navigation links
+- ``{VERSION}`` - The rngit version number
+- ``{GEN_TIME}`` - Page generation time
+
+**Dynamic Templates**
+
+Templates can be made executable to generate dynamic content. If a template file has the executable bit set, it will be executed and its stdout used as the template content.
+
+**Icon Sets**
+
+By default, the page server uses Nerd Font icons. If you prefer simpler icons or your terminal does not support Nerd Fonts, you can enable Unicode icons instead:
+
+.. code:: text
+
+ [pages]
+ serve_nomadnet = yes
+ unicode_icons = yes
+
+**Repository Statistics**
+
+When statistics recording is enabled (see the ``record_stats`` configuration option), the page server can display activity charts for each repository. The statistics page shows:
+
+- Total and peak views, fetches and pushes
+- Daily activity charts over a 90-day period
+- Combined activity visualization
+
+To view statistics, a user must have the ``s`` (stats) permission for the repository. See the Access Configuration section for details on setting permissions.
+
+**Repository Thanks**
+
+The page server includes a "Thanks" feature that allows users to express appreciation for a repository. On each repository page, a "Thanks" link is displayed showing the current thanks count. Clicking this link registers a thank you for the repository.
+
+**Configuration Example**
+
+A complete page server configuration might look like this:
+
+.. code:: text
+
+ [rngit]
+ node_name = My Git Server
+ announce_interval = 360
+ record_stats = yes
+
+ [repositories]
+ public = /var/git/public
+ internal = /var/git/internal
+
+ [access]
+ public = r:all
+ internal = rw:9710b86ba12c42d1d8f30f74fe509286
+
+ [pages]
+ serve_nomadnet = yes
+ unicode_icons = no
+
+
+Release Management
+==================
+
+In addition to hosting Git repositories, ``rngit`` provides a complete release management system. This allows you to publish versioned releases with associated artifacts, release notes and metadata. Releases are managed through the ``rngit release`` subcommand, and are also viewable through the Nomad Network page interface.
+
+**The Release Workflow**
+
+Creating a release involves specifying a Git tag and a directory containing build artifacts or other files to distribute. The ``rngit`` client will open your configured ``$EDITOR`` to compose release notes, then upload all artifacts to the remote repository node.
+
+To create a release, specify the tag name and path to artifacts:
+
+.. code:: text
+
+ $ rngit release create rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo v1.2.0:./dist
+
+This will:
+
+1. Verify that the tag ``v1.2.0`` exists in the repository
+2. Open your editor to write release notes
+3. Upload all files from the ``./dist`` directory
+4. Publish the release
+
+If no ``$EDITOR`` environment variable is set, ``rngit`` will try to use ``nano``, ``vim`` or ``vi``. The editor will show a template with instructions. Lines starting with ``#`` will be ignored, and if the remaining content is empty after stripping comments, the release creation will be cancelled.
+
+**Release Storage & Structure**
+
+Releases are stored on the server in a directory named ``repo_name.releases`` next to the bare repository. Each release is a subdirectory containing:
+
+- ``META`` - Release metadata in ConfigObj format
+- ``RELEASE.md`` or ``RELEASE.mu`` - Release notes
+- ``artifacts/`` - All uploaded files
+- ``THANKS`` - Appreciation count from users
+
+**Listing Releases**
+
+To view all releases for a repository:
+
+.. code:: text
+
+ $ rngit release list rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
+
+ Tag Status Created Objs Notes
+ ------------------------------------------------------------------
+ v1.2.0 published 2025-01-15 14:32 3 Another release
+ v1.1.0 published 2024-12-03 09:15 2 Bug fix release
+ v1.0.0 published 2024-10-20 16:45 2 Initial release
+
+**Viewing Release Details**
+
+To see full information about a specific release:
+
+.. code:: text
+
+ $ rngit release view rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo v1.2.0
+
+ Release : 0.9.2
+ Status : published
+ Created : 2026-05-04 23:53:09
+ Thanks : 5
+
+ Release Notes
+ =============
+
+ Version 1.2.0 release notes...
+
+ Artifacts (4)
+ =============
+ - myapp-1.2.0.tar.gz (1.5 MB)
+ - myapp-1.2.0.zip (1.6 MB)
+ - checksums.txt (256 B)
+
+**Deleting Releases**
+
+To remove a release:
+
+.. code:: text
+
+ $ rngit release delete rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo v1.2.0
+
+ Are you sure you want to delete release 'v1.2.0'? [y/N]: y
+ Release v1.2.0 deleted
+
+**Requirements & Validation**
+
+- The specified tag must exist in the remote repository
+- You must have ``release`` permission for the repository
+- The target artifacts directory must exist and contain at least one file
+- Release notes cannot be empty
+
+**Permissions**
+
+Release management requires the ``release`` permission, configured the same way as other repository permissions. In the config file or ``.allowed`` files, use ``rel:target`` to grant release management rights:
+
+.. code:: text
+
+ # In .allowed file or config
+ rel:all # Allow everyone
+ rel:9710b86... # Allow specific identity
+ rel:none # Deny everyone
+
+**Nomad Network Interface**
+
+When the Nomad Network page server is enabled, releases are displayed on a dedicated releases page for each repository. Each release is listed with its tag, creation date, artifact count and a preview of the release notes. Clicking a release shows the full details including formatted release notes and a listing of all artifacts with their sizes.
+
+Only releases with ``published`` status are visible through the Nomad Network interface. Draft releases (if supported in future implementations) would only be visible through the command-line interface.
+
+**All Command-Line Options (rngit release)**
+
+.. code:: text
+
+ usage: rngit release [-h] [--config CONFIG] [--rnsconfig RNSCONFIG]
+ [-i IDENTITY] [-v] [-q] [--version]
+ operation repository [target]
+
+ Reticulum Git Release Manager
+
+ positional arguments:
+ operation list, view, create or delete
+ repository URL of remote repository (rns://hash/group/repo)
+ target tag or tag:path for create, tag for view/delete
+
+ options:
+ -h, --help show this help message and exit
+ --config CONFIG path to alternative config directory
+ --rnsconfig RNSCONFIG
+ path to alternative Reticulum config directory
+ -i IDENTITY, --identity IDENTITY
+ path to release identity
+ -v, --verbose increase verbosity
+ -q, --quiet decrease verbosity
+ --version show program's version number and exit
\ No newline at end of file
diff --git a/docs/manual/_sources/index.rst.txt b/docs/manual/_sources/index.rst.txt
index 0d70d950..fae99d4d 100644
--- a/docs/manual/_sources/index.rst.txt
+++ b/docs/manual/_sources/index.rst.txt
@@ -27,6 +27,7 @@ to participate in the development of Reticulum itself.
hardware
interfaces
networks
+ git
support
examples
license
diff --git a/docs/manual/_sources/using.rst.txt b/docs/manual/_sources/using.rst.txt
index 98498dd1..6a99b7e4 100644
--- a/docs/manual/_sources/using.rst.txt
+++ b/docs/manual/_sources/using.rst.txt
@@ -683,258 +683,16 @@ another one, which will be created if it does not already exist
The rngit Utility
=================
-The ``rngit`` utility provides full Git repository hosting and interaction over Reticulum. It allows you to host Git repositories on Reticulum nodes, and to interact with remote repositories using standard Git commands through the ``rns://`` URL scheme.
+The ``rngit`` utility provides full Git repository hosting and interaction over Reticulum, as well as many other useful features for software development, collaboration and publishing. It allows you to host Git repositories on Reticulum nodes, interact with remote repositories using standard Git commands through the ``rns://`` URL scheme, and to publish software releases.
-The system consists of two parts: The ``rngit`` node that hosts repositories, and the ``git-remote-rns`` helper that enables Git to communicate with rngit nodes. As soon as you have RNS installed on your system, you can transparently use Git with Reticulum-hosted repositories just like any other type of remote. Git over Reticulum uses URLs in the following format: ``rns://DESTINATION_HASH/group/repo``.
+The system consists of two parts: The ``rngit`` node that hosts and manages repositories, and the ``git-remote-rns`` helper that enables Git to communicate with rngit nodes. As soon as you have RNS installed on your system, you can transparently use Git with Reticulum-hosted repositories just like any other type of remote. Git over Reticulum uses URLs in the following format: ``rns://DESTINATION_HASH/group/repo``.
If you set a branch to track a Reticulum remote as the default upstream, you can simply use ``git`` as you normally would; all commands work transparently and as expected.
.. warning::
**The rngit program is a new addition to RNS!** This functionality was introduced in RNS 1.2.0. While great care has been taken to design a secure, but highly configurable and flexible permission system for allowing many users to interact with many different repositories on a single node, ``rngit`` has not been tested extensively in the wild! Be careful when hosting repositories, especially if they are public or semi-public.
-**Usage Examples**
-
-Run ``rngit`` to start a repository node:
-
-.. code:: text
-
- $ rngit
-
- [Notice] Starting Reticulum Git Node...
- [Notice] Reticulum Git Node listening on <0d7334d411d00120cbad24edf355fdd2>
-
-On the first run, ``rngit`` will create a default configuration file. You will then need to edit this, to point to your repository locations, configure access permissions, and perform any other necessary configuration.
-
-View your identity and destination hashes:
-
-.. code:: text
-
- $ rngit --print-identity
-
- Git Peer Identity : <959e10e5efc1bd9d97a4083babe51dea>
- Repository Node Identity : <153cb870b4665b8c1c348896292b0bad>
- Repositories Destination : <0d7334d411d00120cbad24edf355fdd2>
-
-If the page server is enabled, the output will also include the Nomad Network destination hash.
-
-You can run ``rngit`` in service mode with logging to file:
-
-.. code:: text
-
- $ rngit -s
-
-Clone a repository from a remote ``rngit`` node:
-
-.. code:: text
-
- $ git clone rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
-
-Add a Reticulum remote to an existing repository:
-
-.. code:: text
-
- $ git remote add some_remote rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
-
-Push changes to the Reticulum remote:
-
-.. code:: text
-
- $ git push some_remote master
-
-Get changes from a remote repository:
-
-.. code:: text
-
- $ git pull rns_remote master
-
-**Repository Structure**
-
-The ``rngit`` node organizes repositories into groups. Each group is a directory containing bare Git repositories. The repository path format is ``group_name/repo_name``. For example, a repository at ``/var/git/public/myrepo`` would be accessible as ``public/myrepo`` via the URL ``rns://DESTINATION_HASH/public/myrepo``.
-
-**Configuration**
-
-The ``rngit`` node configuration file is located at ``~/.rngit/config`` (or ``/etc/rngit/config`` for system-wide installations). The default configuration includes:
-
-- Repository group paths defining where to find bare repositories
-- Access permissions for groups and individual repositories
-- Announce intervals for network visibility
-- Optional statistics recording for repository activity
-
-Access permissions can be configured at the group level in the config file, or per-repository using ``.allowed`` files. Permissions use the format ``permission:target`` where permission is ``r`` (read), ``w`` (write), ``rw`` (read/write), ``c`` (create) or ``s`` (stats) and target is ``all``, ``none``, or a specific identity hash.
-
-The ``s`` (stats) permission allows viewing repository activity statistics, including views, fetches and pushes over time. To enable statistics recording, set ``record_stats = yes`` in the ``[rngit]`` section of the configuration file. You can also exclude specific identities from statistics by adding their hashes to ``stats_ignore_identities``.
-
-Repository-specific ``.allowed`` files can be static text files or executable scripts that output permission rules to stdout. A ``group.allowed`` file in a repository group directory applies to all repositories within that group.
-
-**All Command-Line Options (rngit)**
-
-.. code:: text
-
- usage: rngit.py [-h] [--config CONFIG] [--rnsconfig RNSCONFIG] [-s] [-i] [-v]
- [-q] [--version]
-
- Reticulum Git Repository Node
-
- options:
- -h, --help show this help message and exit
- --config CONFIG path to alternative config directory
- --rnsconfig RNSCONFIG
- path to alternative Reticulum config directory
- -p, --print-identity print identity and destination info and exit
- -s, --service rngit is running as a service and should log to file
- -i, --interactive drop into interactive shell after initialisation
- -v, --verbose increase verbosity
- -q, --quiet decrease verbosity
- --version show program's version number and exit
-
-**All Command-Line Options (git-remote-rns)**
-
-The ``git-remote-rns`` helper is automatically invoked by Git when interacting with ``rns://`` URLs. It is not typically run directly by users, but accepts the following environment variables for configuration:
-
-- ``RNGIT_CONFIG`` - Path to alternative client configuration directory
-- ``RNS_CONFIG`` - Path to alternative Reticulum configuration directory
-
-The client configuration file is located at ``~/.rngit/client_config`` and allows adjusting parameters such as the reference batch size for transfers.
-
-**Serving Pages Over Nomad Network**
-
-In addition to providing Git repository access via the Git remote helper protocol, ``rngit`` can also run a `Nomad Network <https://github.com/markqvist/nomadnet>`_ compatible page node. This allows users to browse repository information, view file contents, inspect commit history and access repository statistics through any Nomad Network client.
-
-When enabled, the page node provides a complete interface to your repositories, with automatic Markdown to Micron conversion, syntax-highlighted code browsing, and detailed commit, diff and statistics views.
-
-**Enabling the Git Page Node**
-
-To enable the page node, add the following to your ``~/.rngit/config`` file:
-
-.. code:: text
-
- [pages]
- serve_nomadnet = yes
-
-When the page node is enabled, ``rngit`` will listen on a Nomad Network node destination in addition to the Git repository destination. You can view the destination hash by running:
-
-.. code:: text
-
- $ rngit --print-identity
-
- Git Peer Identity : <959e10e5efc1bd9d97a4083babe51dea>
- Repository Node Identity : <153cb870b4665b8c1c348896292b0bad>
- Repositories Destination : <0d7334d411d00120cbad24edf355fdd2>
- Nomad Network Destination : <50824b711717f97c2fb1166ceddd5ea9>
-
-**Accessing Repository Pages**
-
-Once the page server is running, you can access it from any Nomad Network client by connecting to the Nomad Network destination. The page node provides the following views:
-
-- **Front Page** - Lists all repository groups accessible to your identity
-- **Group Page** - Shows all repositories within a group
-- **Repository Page** - Displays repository overview, description and README
-- **File Browser** - Browse directory trees and view file contents
-- **Commits View** - View commit history with pagination
-- **Commit Details** - Detailed commit information with file changes and diffs
-- **Refs View** - List branches and tags
-- **Statistics** - Activity charts showing views, fetches and pushes over time
-
-All pages respect the same permission system used for Git access. If an identity does not have read access to a repository, they will not be able to view its pages.
-
-**Syntax Highlighting**
-
-If the ``pygments`` Python module is installed on your system, the page server will automatically apply syntax highlighting to code files. The highlighting supports a wide range of programming languages and uses a color theme optimized for terminal display.
-
-To enable syntax highlighting, install pygments:
-
-.. code:: text
-
- pip install pygments
-
-**Markdown & Micron Support**
-
-README files and other Markdown documents are automatically converted to Micron markup for display in Nomad Network clients. You can also write your README files directly in Micron, in which case they will display and render as such in any Nomad Network client. The file browser also supports viewing both rendered and raw Markdown and Micron documents.
-
-Code blocks in Markdown can include language hints for syntax highlighting:
-
-.. code:: text
-
- ```python
- def hello_world():
- print("Hello, Reticulum!")
- ```
-
-**Customizing Templates**
-
-The page server uses a template system that allows complete customization of the generated pages. Templates are stored in the ``~/.rngit/templates/`` directory as Micron files.
-
-The following template files are supported:
-
-- ``base.mu`` - Base template wrapping all pages (must include ``{PAGE_CONTENT}``)
-- ``front.mu`` - Front page listing all groups
-- ``group.mu`` - Group page listing repositories
-- ``repo.mu`` - Repository overview page
-- ``tree.mu`` - File browser pages
-- ``blob.mu`` - File content display
-- ``commits.mu`` - Commit history listing
-- ``commit.mu`` - Individual commit detail page
-- ``refs.mu`` - Branches and tags listing
-- ``stats.mu`` - Statistics page
-
-Templates can include the following variables:
-
-- ``{PAGE_CONTENT}`` - The main content of the page (required)
-- ``{NODE_NAME}`` - The configured node name
-- ``{NAVIGATION}`` - Breadcrumb navigation links
-- ``{VERSION}`` - The rngit version number
-- ``{GEN_TIME}`` - Page generation time
-
-**Dynamic Templates**
-
-Templates can be made executable to generate dynamic content. If a template file has the executable bit set, it will be executed and its stdout used as the template content.
-
-**Icon Sets**
-
-By default, the page server uses Nerd Font icons. If you prefer simpler icons or your terminal does not support Nerd Fonts, you can enable Unicode icons instead:
-
-.. code:: text
-
- [pages]
- serve_nomadnet = yes
- unicode_icons = yes
-
-**Repository Statistics**
-
-When statistics recording is enabled (see the ``record_stats`` configuration option), the page server can display activity charts for each repository. The statistics page shows:
-
-- Total and peak views, fetches and pushes
-- Daily activity charts over a 90-day period
-- Combined activity visualization
-
-To view statistics, a user must have the ``s`` (stats) permission for the repository. See the Access Configuration section for details on setting permissions.
-
-**Repository Thanks**
-
-The page server includes a "Thanks" feature that allows users to express appreciation for a repository. On each repository page, a "Thanks" link is displayed showing the current thanks count. Clicking this link registers a thank you for the repository.
-
-**Configuration Example**
-
-A complete page server configuration might look like this:
-
-.. code:: text
-
- [rngit]
- node_name = My Git Server
- announce_interval = 360
- record_stats = yes
-
- [repositories]
- public = /var/git/public
- internal = /var/git/internal
-
- [access]
- public = r:all
- internal = rw:9710b86ba12c42d1d8f30f74fe509286
-
- [pages]
- serve_nomadnet = yes
- unicode_icons = no
+For the full documentation on the `rngit` system, see the :ref:`Using Git Over Reticulum<git-main>` chapter of this manual.
The rnx Utility
diff --git a/docs/manual/_static/documentation_options.js b/docs/manual/_static/documentation_options.js
index da41795e..6b54cf46 100644
--- a/docs/manual/_static/documentation_options.js
+++ b/docs/manual/_static/documentation_options.js
@@ -1,5 +1,5 @@
const DOCUMENTATION_OPTIONS = {
- VERSION: '1.2.1',
+ VERSION: '1.2.2',
LANGUAGE: 'en',
COLLAPSE_INDEX: false,
BUILDER: 'html',
diff --git a/docs/manual/examples.html b/docs/manual/examples.html
index dca0c556..475bca57 100644
--- a/docs/manual/examples.html
+++ b/docs/manual/examples.html
@@ -7,7 +7,7 @@
<link rel="prefetch" href="_static/rns_logo_512.png" as="image">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25.dev1 -->
- <title>Code Examples - Reticulum Network Stack 1.2.1 documentation</title>
+ <title>Code Examples - Reticulum Network Stack 1.2.2 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
@@ -180,7 +180,7 @@
</label>
</div>
<div class="header-center">
- <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.1 documentation</div></a>
+ <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.2 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
@@ -204,7 +204,7 @@
<img class="sidebar-logo" src="_static/rns_logo_512.png" alt="Logo"/>
</div>
- <span class="sidebar-brand-text">Reticulum Network Stack 1.2.1 documentation</span>
+ <span class="sidebar-brand-text">Reticulum Network Stack 1.2.2 documentation</span>
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
@@ -3663,7 +3663,7 @@ will be fully on-par with natively included interfaces, including all supported
</aside>
</div>
-</div><script src="_static/documentation_options.js?v=ca842793"></script>
+</div><script src="_static/documentation_options.js?v=fd7cadf9"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
diff --git a/docs/manual/forhumans.html b/docs/manual/forhumans.html
index e056bd9b..283ccf60 100644
--- a/docs/manual/forhumans.html
+++ b/docs/manual/forhumans.html
@@ -7,7 +7,7 @@
<link rel="prefetch" href="_static/rns_logo_512.png" as="image">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25.dev1 -->
- <title>An Explanation of Reticulum for Human Beings - Reticulum Network Stack 1.2.1 documentation</title>
+ <title>An Explanation of Reticulum for Human Beings - Reticulum Network Stack 1.2.2 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
@@ -180,7 +180,7 @@
</label>
</div>
<div class="header-center">
- <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.1 documentation</div></a>
+ <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.2 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
@@ -204,7 +204,7 @@
<img class="sidebar-logo" src="_static/rns_logo_512.png" alt="Logo"/>
</div>
- <span class="sidebar-brand-text">Reticulum Network Stack 1.2.1 documentation</span>
+ <span class="sidebar-brand-text">Reticulum Network Stack 1.2.2 documentation</span>
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
@@ -294,7 +294,7 @@
</aside>
</div>
-</div><script src="_static/documentation_options.js?v=ca842793"></script>
+</div><script src="_static/documentation_options.js?v=fd7cadf9"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
diff --git a/docs/manual/genindex.html b/docs/manual/genindex.html
index 75cb51d8..1587249d 100644
--- a/docs/manual/genindex.html
+++ b/docs/manual/genindex.html
@@ -5,7 +5,7 @@
<meta name="color-scheme" content="light dark"><link rel="index" title="Index" href="#"><link rel="search" title="Search" href="search.html">
<link rel="prefetch" href="_static/rns_logo_512.png" as="image">
- <!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25.dev1 --><title>Index - Reticulum Network Stack 1.2.1 documentation</title>
+ <!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25.dev1 --><title>Index - Reticulum Network Stack 1.2.2 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
@@ -178,7 +178,7 @@
</label>
</div>
<div class="header-center">
- <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.1 documentation</div></a>
+ <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.2 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
@@ -202,7 +202,7 @@
<img class="sidebar-logo" src="_static/rns_logo_512.png" alt="Logo"/>
</div>
- <span class="sidebar-brand-text">Reticulum Network Stack 1.2.1 documentation</span>
+ <span class="sidebar-brand-text">Reticulum Network Stack 1.2.2 documentation</span>
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
@@ -220,6 +220,7 @@
<li class="toctree-l1"><a class="reference internal" href="hardware.html">Communications Hardware</a></li>
<li class="toctree-l1"><a class="reference internal" href="interfaces.html">Configuring Interfaces</a></li>
<li class="toctree-l1"><a class="reference internal" href="networks.html">Building Networks</a></li>
+<li class="toctree-l1"><a class="reference internal" href="git.html">Using Git Over Reticulum</a></li>
<li class="toctree-l1"><a class="reference internal" href="support.html">Support Reticulum</a></li>
<li class="toctree-l1"><a class="reference internal" href="examples.html">Code Examples</a></li>
<li class="toctree-l1"><a class="reference internal" href="license.html">Reticulum License</a></li>
@@ -836,7 +837,7 @@
</aside>
</div>
-</div><script src="_static/documentation_options.js?v=ca842793"></script>
+</div><script src="_static/documentation_options.js?v=fd7cadf9"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
diff --git a/docs/manual/gettingstartedfast.html b/docs/manual/gettingstartedfast.html
index 35c59eac..5a9f1f16 100644
--- a/docs/manual/gettingstartedfast.html
+++ b/docs/manual/gettingstartedfast.html
@@ -7,7 +7,7 @@
<link rel="prefetch" href="_static/rns_logo_512.png" as="image">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25.dev1 -->
- <title>Getting Started Fast - Reticulum Network Stack 1.2.1 documentation</title>
+ <title>Getting Started Fast - Reticulum Network Stack 1.2.2 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
@@ -180,7 +180,7 @@
</label>
</div>
<div class="header-center">
- <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.1 documentation</div></a>
+ <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.2 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
@@ -204,7 +204,7 @@
<img class="sidebar-logo" src="_static/rns_logo_512.png" alt="Logo"/>
</div>
- <span class="sidebar-brand-text">Reticulum Network Stack 1.2.1 documentation</span>
+ <span class="sidebar-brand-text">Reticulum Network Stack 1.2.2 documentation</span>
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
@@ -966,7 +966,7 @@ All other available modules will still be loaded when needed.</p>
</aside>
</div>
-</div><script src="_static/documentation_options.js?v=ca842793"></script>
+</div><script src="_static/documentation_options.js?v=fd7cadf9"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
diff --git a/docs/manual/git.html b/docs/manual/git.html
new file mode 100644
index 00000000..5091c475
--- /dev/null
+++ b/docs/manual/git.html
@@ -0,0 +1,662 @@
+<!doctype html>
+<html class="no-js" lang="en" data-content_root="./">
+ <head><meta charset="utf-8">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ <meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
+<link rel="index" title="Index" href="genindex.html"><link rel="search" title="Search" href="search.html"><link rel="next" title="Support Reticulum" href="support.html"><link rel="prev" title="Building Networks" href="networks.html">
+ <link rel="prefetch" href="_static/rns_logo_512.png" as="image">
+
+ <!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25.dev1 -->
+ <title>Using Git Over Reticulum - Reticulum Network Stack 1.2.2 documentation</title>
+ <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
+ <link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
+ <link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
+ <link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=8dab3a3b" />
+ <link rel="stylesheet" type="text/css" href="_static/custom.css?v=bb3cebc5" />
+
+
+
+
+<style>
+ body {
+ --color-code-background: #f2f2f2;
+ --color-code-foreground: #1e1e1e;
+
+ }
+ @media not print {
+ body[data-theme="dark"] {
+ --color-code-background: #202020;
+ --color-code-foreground: #d0d0d0;
+ --color-background-primary: #202b38;
+ --color-background-secondary: #161f27;
+ --color-foreground-primary: #dbdbdb;
+ --color-foreground-secondary: #a9b1ba;
+ --color-brand-primary: #41adff;
+ --color-background-hover: #161f27;
+ --color-api-name: #ffbe85;
+ --color-api-pre-name: #efae75;
+
+ }
+ @media (prefers-color-scheme: dark) {
+ body:not([data-theme="light"]) {
+ --color-code-background: #202020;
+ --color-code-foreground: #d0d0d0;
+ --color-background-primary: #202b38;
+ --color-background-secondary: #161f27;
+ --color-foreground-primary: #dbdbdb;
+ --color-foreground-secondary: #a9b1ba;
+ --color-brand-primary: #41adff;
+ --color-background-hover: #161f27;
+ --color-api-name: #ffbe85;
+ --color-api-pre-name: #efae75;
+
+ }
+ }
+ }
+</style></head>
+ <body>
+
+ <script>
+ document.body.dataset.theme = localStorage.getItem("theme") || "auto";
+ </script>
+
+
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
+ <symbol id="svg-toc" viewBox="0 0 24 24">
+ <title>Contents</title>
+ <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
+ <path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
+ </svg>
+ </symbol>
+ <symbol id="svg-menu" viewBox="0 0 24 24">
+ <title>Menu</title>
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
+ stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
+ <line x1="3" y1="12" x2="21" y2="12"></line>
+ <line x1="3" y1="6" x2="21" y2="6"></line>
+ <line x1="3" y1="18" x2="21" y2="18"></line>
+ </svg>
+ </symbol>
+ <symbol id="svg-arrow-right" viewBox="0 0 24 24">
+ <title>Expand</title>
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
+ stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
+ <polyline points="9 18 15 12 9 6"></polyline>
+ </svg>
+ </symbol>
+ <symbol id="svg-sun" viewBox="0 0 24 24">
+ <title>Light mode</title>
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
+ stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
+ <circle cx="12" cy="12" r="5"></circle>
+ <line x1="12" y1="1" x2="12" y2="3"></line>
+ <line x1="12" y1="21" x2="12" y2="23"></line>
+ <line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
+ <line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
+ <line x1="1" y1="12" x2="3" y2="12"></line>
+ <line x1="21" y1="12" x2="23" y2="12"></line>
+ <line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
+ <line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
+ </svg>
+ </symbol>
+ <symbol id="svg-moon" viewBox="0 0 24 24">
+ <title>Dark mode</title>
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
+ stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
+ <path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
+ </svg>
+ </symbol>
+ <symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
+ <title>Auto light/dark, in light mode</title>
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
+ stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
+ class="icon-custom-derived-from-feather-sun-and-tabler-moon">
+ <path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
+ <line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
+ <line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
+ <line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
+ <line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
+ <line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
+ <line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
+ <line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
+ <line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
+ <circle cx="14.5" cy="9.55" r="3.6"/>
+ </svg>
+ </symbol>
+ <symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
+ <title>Auto light/dark, in dark mode</title>
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
+ stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
+ class="icon-custom-derived-from-feather-sun-and-tabler-moon">
+ <path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
+ <line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
+ <line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
+ <line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
+ <line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
+ <line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
+ <line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
+ <line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
+ <line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
+ <circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
+ </svg>
+ </symbol>
+ <symbol id="svg-pencil" viewBox="0 0 24 24">
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
+ stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
+ <path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
+ <path d="M13.5 6.5l4 4" />
+ <path d="M20 21l2 -2l-2 -2" />
+ <path d="M17 17l-2 2l2 2" />
+ </svg>
+ </symbol>
+ <symbol id="svg-eye" viewBox="0 0 24 24">
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
+ stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
+ <path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
+ <path
+ d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
+ <path d="M20 21l2 -2l-2 -2" />
+ <path d="M17 17l-2 2l2 2" />
+ </svg>
+ </symbol>
+</svg>
+
+<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
+<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
+<label class="overlay sidebar-overlay" for="__navigation"></label>
+<label class="overlay toc-overlay" for="__toc"></label>
+
+<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
+
+
+
+<div class="page">
+ <header class="mobile-header">
+ <div class="header-left">
+ <label class="nav-overlay-icon" for="__navigation">
+ <span class="icon"><svg><use href="#svg-menu"></use></svg></span>
+ </label>
+ </div>
+ <div class="header-center">
+ <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.2 documentation</div></a>
+ </div>
+ <div class="header-right">
+ <div class="theme-toggle-container theme-toggle-header">
+ <button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
+ <svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
+ <svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
+ <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
+ <svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
+ </button>
+ </div>
+ <label class="toc-overlay-icon toc-header-icon" for="__toc">
+ <span class="icon"><svg><use href="#svg-toc"></use></svg></span>
+ </label>
+ </div>
+ </header>
+ <aside class="sidebar-drawer">
+ <div class="sidebar-container">
+
+ <div class="sidebar-sticky"><a class="sidebar-brand" href="index.html">
+ <div class="sidebar-logo-container">
+ <img class="sidebar-logo" src="_static/rns_logo_512.png" alt="Logo"/>
+ </div>
+
+ <span class="sidebar-brand-text">Reticulum Network Stack 1.2.2 documentation</span>
+
+</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
+ <input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
+ <input type="hidden" name="check_keywords" value="yes">
+ <input type="hidden" name="area" value="default">
+</form>
+<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="whatis.html">What is Reticulum?</a></li>
+<li class="toctree-l1"><a class="reference internal" href="gettingstartedfast.html">Getting Started Fast</a></li>
+<li class="toctree-l1"><a class="reference internal" href="zen.html">Zen of Reticulum</a></li>
+<li class="toctree-l1"><a class="reference internal" href="software.html">Programs Using Reticulum</a></li>
+<li class="toctree-l1"><a class="reference internal" href="using.html">Using Reticulum on Your System</a></li>
+<li class="toctree-l1"><a class="reference internal" href="understanding.html">Understanding Reticulum</a></li>
+<li class="toctree-l1"><a class="reference internal" href="hardware.html">Communications Hardware</a></li>
+<li class="toctree-l1"><a class="reference internal" href="interfaces.html">Configuring Interfaces</a></li>
+<li class="toctree-l1"><a class="reference internal" href="networks.html">Building Networks</a></li>
+<li class="toctree-l1 current current-page"><a class="current reference internal" href="#">Using Git Over Reticulum</a></li>
+<li class="toctree-l1"><a class="reference internal" href="support.html">Support Reticulum</a></li>
+<li class="toctree-l1"><a class="reference internal" href="examples.html">Code Examples</a></li>
+<li class="toctree-l1"><a class="reference internal" href="license.html">Reticulum License</a></li>
+</ul>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="reference.html">API Reference</a></li>
+</ul>
+
+</div>
+</div>
+
+ </div>
+
+ </div>
+ </aside>
+ <div class="main">
+ <div class="content">
+ <div class="article-container">
+ <a href="#" class="back-to-top muted-link">
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
+ </svg>
+ <span>Back to top</span>
+ </a>
+ <div class="content-icon-container">
+ <div class="theme-toggle-container theme-toggle-content">
+ <button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
+ <svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
+ <svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
+ <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
+ <svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
+ </button>
+ </div>
+ <label class="toc-overlay-icon toc-content-icon" for="__toc">
+ <span class="icon"><svg><use href="#svg-toc"></use></svg></span>
+ </label>
+ </div>
+ <article role="main" id="furo-main-content">
+ <section id="using-git-over-reticulum">
+<span id="git-main"></span><h1>Using Git Over Reticulum<a class="headerlink" href="#using-git-over-reticulum" title="Link to this heading">¶</a></h1>
+<p>A set of utilities for distributed collaborative software development and publishing is included in RNS.</p>
+<p>The system consists of two parts: The <code class="docutils literal notranslate"><span class="pre">rngit</span></code> node that hosts repositories, and the <code class="docutils literal notranslate"><span class="pre">git-remote-rns</span></code> helper that enables Git to communicate with rngit nodes. As soon as you have RNS installed on your system, you can transparently use Git with Reticulum-hosted repositories just like any other type of remote. Git over Reticulum uses URLs in the following format: <code class="docutils literal notranslate"><span class="pre">rns://DESTINATION_HASH/group/repo</span></code>.</p>
+<p>If you set a branch to track a Reticulum remote as the default upstream, you can simply use <code class="docutils literal notranslate"><span class="pre">git</span></code> as you normally would; all commands work transparently and as expected.</p>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p><strong>The rngit program is a new addition to RNS!</strong> This functionality was introduced in RNS 1.2.0. While great care has been taken to design a secure, but highly configurable and flexible permission system for allowing many users to interact with many different repositories on a single node, <code class="docutils literal notranslate"><span class="pre">rngit</span></code> has not been tested extensively in the wild! Be careful when hosting repositories, especially if they are public or semi-public.</p>
+</div>
+<section id="the-rngit-utility">
+<h2>The rngit Utility<a class="headerlink" href="#the-rngit-utility" title="Link to this heading">¶</a></h2>
+<p>The <code class="docutils literal notranslate"><span class="pre">rngit</span></code> utility provides full Git repository hosting and interaction over Reticulum. It allows you to host and manage Git repositories and releases on Reticulum nodes, and to interact with remote repositories using standard Git commands through the <code class="docutils literal notranslate"><span class="pre">rns://</span></code> URL scheme.</p>
+<p><strong>Usage Examples</strong></p>
+<p>Run <code class="docutils literal notranslate"><span class="pre">rngit</span></code> to start a repository node:</p>
+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ rngit
+
+[Notice] Starting Reticulum Git Node...
+[Notice] Reticulum Git Node listening on <0d7334d411d00120cbad24edf355fdd2>
+</pre></div>
+</div>
+<p>On the first run, <code class="docutils literal notranslate"><span class="pre">rngit</span></code> will create a default configuration file. You will then need to edit this, to point to your repository locations, configure access permissions, and perform any other necessary configuration.</p>
+<p>View your identity and destination hashes:</p>
+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ rngit --print-identity
+
+Git Peer Identity : <959e10e5efc1bd9d97a4083babe51dea>
+Repository Node Identity : <153cb870b4665b8c1c348896292b0bad>
+Repositories Destination : <0d7334d411d00120cbad24edf355fdd2>
+</pre></div>
+</div>
+<p>If the page server is enabled, the output will also include the Nomad Network destination hash.</p>
+<p>You can run <code class="docutils literal notranslate"><span class="pre">rngit</span></code> in service mode with logging to file:</p>
+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ rngit -s
+</pre></div>
+</div>
+<p>Clone a repository from a remote <code class="docutils literal notranslate"><span class="pre">rngit</span></code> node:</p>
+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ git clone rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
+</pre></div>
+</div>
+<p>Add a Reticulum remote to an existing repository:</p>
+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ git remote add some_remote rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
+</pre></div>
+</div>
+<p>Push changes to the Reticulum remote:</p>
+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ git push some_remote master
+</pre></div>
+</div>
+<p>Get changes from a remote repository:</p>
+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ git pull rns_remote master
+</pre></div>
+</div>
+<p><strong>All Command-Line Options (rngit)</strong></p>
+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>usage: rngit.py [-h] [--config CONFIG] [--rnsconfig RNSCONFIG] [-s] [-i] [-v]
+ [-q] [--version]
+
+Reticulum Git Repository Node
+
+options:
+ -h, --help show this help message and exit
+ --config CONFIG path to alternative config directory
+ --rnsconfig RNSCONFIG
+ path to alternative Reticulum config directory
+ -p, --print-identity print identity and destination info and exit
+ -s, --service rngit is running as a service and should log to file
+ -i, --interactive drop into interactive shell after initialisation
+ -v, --verbose increase verbosity
+ -q, --quiet decrease verbosity
+ --version show program's version number and exit
+</pre></div>
+</div>
+<p><strong>All Command-Line Options (git-remote-rns)</strong></p>
+<p>The <code class="docutils literal notranslate"><span class="pre">git-remote-rns</span></code> helper is automatically invoked by Git when interacting with <code class="docutils literal notranslate"><span class="pre">rns://</span></code> URLs. It is not typically run directly by users, but accepts the following environment variables for configuration:</p>
+<ul class="simple">
+<li><p><code class="docutils literal notranslate"><span class="pre">RNGIT_CONFIG</span></code> - Path to alternative client configuration directory</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">RNS_CONFIG</span></code> - Path to alternative Reticulum configuration directory</p></li>
+</ul>
+<p>The client configuration file is located at <code class="docutils literal notranslate"><span class="pre">~/.rngit/client_config</span></code> and allows adjusting parameters such as the reference batch size for transfers.</p>
+</section>
+<section id="repository-structure">
+<h2>Repository Structure<a class="headerlink" href="#repository-structure" title="Link to this heading">¶</a></h2>
+<p>The <code class="docutils literal notranslate"><span class="pre">rngit</span></code> node organizes repositories into groups. Each group is a directory containing bare Git repositories. The repository path format is <code class="docutils literal notranslate"><span class="pre">group_name/repo_name</span></code>. For example, a repository at <code class="docutils literal notranslate"><span class="pre">/var/git/public/myrepo</span></code> would be accessible as <code class="docutils literal notranslate"><span class="pre">public/myrepo</span></code> via the URL <code class="docutils literal notranslate"><span class="pre">rns://DESTINATION_HASH/public/myrepo</span></code>.</p>
+<p><strong>Configuration</strong></p>
+<p>The <code class="docutils literal notranslate"><span class="pre">rngit</span></code> node configuration file is located at <code class="docutils literal notranslate"><span class="pre">~/.rngit/config</span></code> (or <code class="docutils literal notranslate"><span class="pre">/etc/rngit/config</span></code> for system-wide installations). The default configuration includes:</p>
+<ul class="simple">
+<li><p>Repository group paths defining where to find bare repositories</p></li>
+<li><p>Access permissions for groups and individual repositories</p></li>
+<li><p>Announce intervals for network visibility</p></li>
+<li><p>Optional statistics recording for repository activity</p></li>
+</ul>
+<p>Access permissions can be configured at the group level in the config file, or per-repository using <code class="docutils literal notranslate"><span class="pre">.allowed</span></code> files. Permissions use the format <code class="docutils literal notranslate"><span class="pre">permission:target</span></code> where permission is <code class="docutils literal notranslate"><span class="pre">r</span></code> (read), <code class="docutils literal notranslate"><span class="pre">w</span></code> (write), <code class="docutils literal notranslate"><span class="pre">rw</span></code> (read/write), <code class="docutils literal notranslate"><span class="pre">c</span></code> (create) or <code class="docutils literal notranslate"><span class="pre">s</span></code> (stats) and target is <code class="docutils literal notranslate"><span class="pre">all</span></code>, <code class="docutils literal notranslate"><span class="pre">none</span></code>, or a specific identity hash.</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">s</span></code> (stats) permission allows viewing repository activity statistics, including views, fetches and pushes over time. To enable statistics recording, set <code class="docutils literal notranslate"><span class="pre">record_stats</span> <span class="pre">=</span> <span class="pre">yes</span></code> in the <code class="docutils literal notranslate"><span class="pre">[rngit]</span></code> section of the configuration file. You can also exclude specific identities from statistics by adding their hashes to <code class="docutils literal notranslate"><span class="pre">stats_ignore_identities</span></code>.</p>
+<p>Repository-specific <code class="docutils literal notranslate"><span class="pre">.allowed</span></code> files can be static text files or executable scripts that output permission rules to stdout. A <code class="docutils literal notranslate"><span class="pre">group.allowed</span></code> file in a repository group directory applies to all repositories within that group.</p>
+</section>
+<section id="serving-pages-over-nomad-network">
+<h2>Serving Pages Over Nomad Network<a class="headerlink" href="#serving-pages-over-nomad-network" title="Link to this heading">¶</a></h2>
+<p>In addition to providing Git repository access via the Git remote helper protocol, <code class="docutils literal notranslate"><span class="pre">rngit</span></code> can also run a <a class="reference external" href="https://github.com/markqvist/nomadnet">Nomad Network</a> compatible page node. This allows users to browse repository information, view file contents, inspect commit history and access repository statistics through any Nomad Network client.</p>
+<p>When enabled, the page node provides a complete interface to your repositories, with automatic Markdown to Micron conversion, syntax-highlighted code browsing, and detailed commit, diff and statistics views.</p>
+<p><strong>Enabling the Git Page Node</strong></p>
+<p>To enable the page node, add the following to your <code class="docutils literal notranslate"><span class="pre">~/.rngit/config</span></code> file:</p>
+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>[pages]
+serve_nomadnet = yes
+</pre></div>
+</div>
+<p>When the page node is enabled, <code class="docutils literal notranslate"><span class="pre">rngit</span></code> will listen on a Nomad Network node destination in addition to the Git repository destination. You can view the destination hash by running:</p>
+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ rngit --print-identity
+
+Git Peer Identity : <959e10e5efc1bd9d97a4083babe51dea>
+Repository Node Identity : <153cb870b4665b8c1c348896292b0bad>
+Repositories Destination : <0d7334d411d00120cbad24edf355fdd2>
+Nomad Network Destination : <50824b711717f97c2fb1166ceddd5ea9>
+</pre></div>
+</div>
+<p><strong>Accessing Repository Pages</strong></p>
+<p>Once the page server is running, you can access it from any Nomad Network client by connecting to the Nomad Network destination. The page node provides the following views:</p>
+<ul class="simple">
+<li><p><strong>Front Page</strong> - Lists all repository groups accessible to your identity</p></li>
+<li><p><strong>Group Page</strong> - Shows all repositories within a group</p></li>
+<li><p><strong>Repository Page</strong> - Displays repository overview, description and README</p></li>
+<li><p><strong>Releases</strong> - List of releases for the repository, with information and downloads</p></li>
+<li><p><strong>File Browser</strong> - Browse directory trees and view and download file contents</p></li>
+<li><p><strong>Commits View</strong> - View commit history with pagination</p></li>
+<li><p><strong>Commit Details</strong> - Detailed commit information with file changes and diffs</p></li>
+<li><p><strong>Refs View</strong> - List branches and tags</p></li>
+<li><p><strong>Statistics</strong> - Activity charts showing views, fetches and pushes over time</p></li>
+</ul>
+<p>All pages respect the same permission system used for Git access. If an identity does not have read access to a repository, they will not be able to view its pages.</p>
+</section>
+<section id="formatting-syntax-highlighting">
+<h2>Formatting & Syntax Highlighting<a class="headerlink" href="#formatting-syntax-highlighting" title="Link to this heading">¶</a></h2>
+<p>If the <code class="docutils literal notranslate"><span class="pre">pygments</span></code> Python module is installed on your system, the page server will automatically apply syntax highlighting to code files. The highlighting supports a wide range of programming languages and uses a color theme optimized for terminal display.</p>
+<p>To enable syntax highlighting, install pygments:</p>
+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>pip install pygments
+</pre></div>
+</div>
+<p><strong>Markdown & Micron Support</strong></p>
+<p>README files and other Markdown documents are automatically converted to Micron markup for display in Nomad Network clients. You can also write your README files directly in Micron, in which case they will display and render as such in any Nomad Network client. The file browser also supports viewing both rendered and raw Markdown and Micron documents.</p>
+<p>Code blocks in Markdown can include language hints for syntax highlighting:</p>
+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>```python
+def hello_world():
+ print("Hello, Reticulum!")
+```
+</pre></div>
+</div>
+</section>
+<section id="customizing-templates">
+<h2>Customizing Templates<a class="headerlink" href="#customizing-templates" title="Link to this heading">¶</a></h2>
+<p>The page server uses a template system that allows complete customization of the generated pages. Templates are stored in the <code class="docutils literal notranslate"><span class="pre">~/.rngit/templates/</span></code> directory as Micron files.</p>
+<p>The following template files are supported:</p>
+<ul class="simple">
+<li><p><code class="docutils literal notranslate"><span class="pre">base.mu</span></code> - Base template wrapping all pages</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">front.mu</span></code> - Front page listing all groups</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">group.mu</span></code> - Group page listing repositories</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">repo.mu</span></code> - Repository overview page</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">releases.mu</span></code> - Release list page</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">release.mu</span></code> - Release details page</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">tree.mu</span></code> - File browser pages</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">blob.mu</span></code> - File content display</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">commits.mu</span></code> - Commit history listing</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">commit.mu</span></code> - Individual commit detail page</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">refs.mu</span></code> - Branches and tags listing</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">stats.mu</span></code> - Statistics page</p></li>
+</ul>
+<p>Templates can include the following variables:</p>
+<ul class="simple">
+<li><p><code class="docutils literal notranslate"><span class="pre">{PAGE_CONTENT}</span></code> - The main content of the page (required)</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">{NODE_NAME}</span></code> - The configured node name</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">{NAVIGATION}</span></code> - Breadcrumb navigation links</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">{VERSION}</span></code> - The rngit version number</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">{GEN_TIME}</span></code> - Page generation time</p></li>
+</ul>
+<p><strong>Dynamic Templates</strong></p>
+<p>Templates can be made executable to generate dynamic content. If a template file has the executable bit set, it will be executed and its stdout used as the template content.</p>
+<p><strong>Icon Sets</strong></p>
+<p>By default, the page server uses Nerd Font icons. If you prefer simpler icons or your terminal does not support Nerd Fonts, you can enable Unicode icons instead:</p>
+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>[pages]
+serve_nomadnet = yes
+unicode_icons = yes
+</pre></div>
+</div>
+<p><strong>Repository Statistics</strong></p>
+<p>When statistics recording is enabled (see the <code class="docutils literal notranslate"><span class="pre">record_stats</span></code> configuration option), the page server can display activity charts for each repository. The statistics page shows:</p>
+<ul class="simple">
+<li><p>Total and peak views, fetches and pushes</p></li>
+<li><p>Daily activity charts over a 90-day period</p></li>
+<li><p>Combined activity visualization</p></li>
+</ul>
+<p>To view statistics, a user must have the <code class="docutils literal notranslate"><span class="pre">s</span></code> (stats) permission for the repository. See the Access Configuration section for details on setting permissions.</p>
+<p><strong>Repository Thanks</strong></p>
+<p>The page server includes a “Thanks” feature that allows users to express appreciation for a repository. On each repository page, a “Thanks” link is displayed showing the current thanks count. Clicking this link registers a thank you for the repository.</p>
+<p><strong>Configuration Example</strong></p>
+<p>A complete page server configuration might look like this:</p>
+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>[rngit]
+node_name = My Git Server
+announce_interval = 360
+record_stats = yes
+
+[repositories]
+public = /var/git/public
+internal = /var/git/internal
+
+[access]
+public = r:all
+internal = rw:9710b86ba12c42d1d8f30f74fe509286
+
+[pages]
+serve_nomadnet = yes
+unicode_icons = no
+</pre></div>
+</div>
+</section>
+<section id="release-management">
+<h2>Release Management<a class="headerlink" href="#release-management" title="Link to this heading">¶</a></h2>
+<p>In addition to hosting Git repositories, <code class="docutils literal notranslate"><span class="pre">rngit</span></code> provides a complete release management system. This allows you to publish versioned releases with associated artifacts, release notes and metadata. Releases are managed through the <code class="docutils literal notranslate"><span class="pre">rngit</span> <span class="pre">release</span></code> subcommand, and are also viewable through the Nomad Network page interface.</p>
+<p><strong>The Release Workflow</strong></p>
+<p>Creating a release involves specifying a Git tag and a directory containing build artifacts or other files to distribute. The <code class="docutils literal notranslate"><span class="pre">rngit</span></code> client will open your configured <code class="docutils literal notranslate"><span class="pre">$EDITOR</span></code> to compose release notes, then upload all artifacts to the remote repository node.</p>
+<p>To create a release, specify the tag name and path to artifacts:</p>
+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ rngit release create rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo v1.2.0:./dist
+</pre></div>
+</div>
+<p>This will:</p>
+<ol class="arabic simple">
+<li><p>Verify that the tag <code class="docutils literal notranslate"><span class="pre">v1.2.0</span></code> exists in the repository</p></li>
+<li><p>Open your editor to write release notes</p></li>
+<li><p>Upload all files from the <code class="docutils literal notranslate"><span class="pre">./dist</span></code> directory</p></li>
+<li><p>Publish the release</p></li>
+</ol>
+<p>If no <code class="docutils literal notranslate"><span class="pre">$EDITOR</span></code> environment variable is set, <code class="docutils literal notranslate"><span class="pre">rngit</span></code> will try to use <code class="docutils literal notranslate"><span class="pre">nano</span></code>, <code class="docutils literal notranslate"><span class="pre">vim</span></code> or <code class="docutils literal notranslate"><span class="pre">vi</span></code>. The editor will show a template with instructions. Lines starting with <code class="docutils literal notranslate"><span class="pre">#</span></code> will be ignored, and if the remaining content is empty after stripping comments, the release creation will be cancelled.</p>
+<p><strong>Release Storage & Structure</strong></p>
+<p>Releases are stored on the server in a directory named <code class="docutils literal notranslate"><span class="pre">repo_name.releases</span></code> next to the bare repository. Each release is a subdirectory containing:</p>
+<ul class="simple">
+<li><p><code class="docutils literal notranslate"><span class="pre">META</span></code> - Release metadata in ConfigObj format</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">RELEASE.md</span></code> or <code class="docutils literal notranslate"><span class="pre">RELEASE.mu</span></code> - Release notes</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">artifacts/</span></code> - All uploaded files</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">THANKS</span></code> - Appreciation count from users</p></li>
+</ul>
+<p><strong>Listing Releases</strong></p>
+<p>To view all releases for a repository:</p>
+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ rngit release list rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
+
+Tag Status Created Objs Notes
+------------------------------------------------------------------
+v1.2.0 published 2025-01-15 14:32 3 Another release
+v1.1.0 published 2024-12-03 09:15 2 Bug fix release
+v1.0.0 published 2024-10-20 16:45 2 Initial release
+</pre></div>
+</div>
+<p><strong>Viewing Release Details</strong></p>
+<p>To see full information about a specific release:</p>
+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ rngit release view rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo v1.2.0
+
+Release : 0.9.2
+Status : published
+Created : 2026-05-04 23:53:09
+Thanks : 5
+
+Release Notes
+=============
+
+Version 1.2.0 release notes...
+
+Artifacts (4)
+=============
+ - myapp-1.2.0.tar.gz (1.5 MB)
+ - myapp-1.2.0.zip (1.6 MB)
+ - checksums.txt (256 B)
+</pre></div>
+</div>
+<p><strong>Deleting Releases</strong></p>
+<p>To remove a release:</p>
+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ rngit release delete rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo v1.2.0
+
+Are you sure you want to delete release 'v1.2.0'? [y/N]: y
+Release v1.2.0 deleted
+</pre></div>
+</div>
+<p><strong>Requirements & Validation</strong></p>
+<ul class="simple">
+<li><p>The specified tag must exist in the remote repository</p></li>
+<li><p>You must have <code class="docutils literal notranslate"><span class="pre">release</span></code> permission for the repository</p></li>
+<li><p>The target artifacts directory must exist and contain at least one file</p></li>
+<li><p>Release notes cannot be empty</p></li>
+</ul>
+<p><strong>Permissions</strong></p>
+<p>Release management requires the <code class="docutils literal notranslate"><span class="pre">release</span></code> permission, configured the same way as other repository permissions. In the config file or <code class="docutils literal notranslate"><span class="pre">.allowed</span></code> files, use <code class="docutils literal notranslate"><span class="pre">rel:target</span></code> to grant release management rights:</p>
+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span># In .allowed file or config
+rel:all # Allow everyone
+rel:9710b86... # Allow specific identity
+rel:none # Deny everyone
+</pre></div>
+</div>
+<p><strong>Nomad Network Interface</strong></p>
+<p>When the Nomad Network page server is enabled, releases are displayed on a dedicated releases page for each repository. Each release is listed with its tag, creation date, artifact count and a preview of the release notes. Clicking a release shows the full details including formatted release notes and a listing of all artifacts with their sizes.</p>
+<p>Only releases with <code class="docutils literal notranslate"><span class="pre">published</span></code> status are visible through the Nomad Network interface. Draft releases (if supported in future implementations) would only be visible through the command-line interface.</p>
+<p><strong>All Command-Line Options (rngit release)</strong></p>
+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>usage: rngit release [-h] [--config CONFIG] [--rnsconfig RNSCONFIG]
+ [-i IDENTITY] [-v] [-q] [--version]
+ operation repository [target]
+
+Reticulum Git Release Manager
+
+positional arguments:
+ operation list, view, create or delete
+ repository URL of remote repository (rns://hash/group/repo)
+ target tag or tag:path for create, tag for view/delete
+
+options:
+ -h, --help show this help message and exit
+ --config CONFIG path to alternative config directory
+ --rnsconfig RNSCONFIG
+ path to alternative Reticulum config directory
+ -i IDENTITY, --identity IDENTITY
+ path to release identity
+ -v, --verbose increase verbosity
+ -q, --quiet decrease verbosity
+ --version show program's version number and exit
+</pre></div>
+</div>
+</section>
+</section>
+
+ </article>
+ </div>
+ <footer>
+
+ <div class="related-pages">
+ <a class="next-page" href="support.html">
+ <div class="page-info">
+ <div class="context">
+ <span>Next</span>
+ </div>
+ <div class="title">Support Reticulum</div>
+ </div>
+ <svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
+ </a>
+ <a class="prev-page" href="networks.html">
+ <svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
+ <div class="page-info">
+ <div class="context">
+ <span>Previous</span>
+ </div>
+
+ <div class="title">Building Networks</div>
+
+ </div>
+ </a>
+ </div>
+ <div class="bottom-of-page">
+ <div class="left-details">
+ <div class="copyright">
+ Copyright © 2025, Mark Qvist
+ </div>
+ Generated with <a href="https://www.sphinx-doc.org/">Sphinx</a> and
+ <a href="https://github.com/pradyunsg/furo">Furo</a>
+
+ </div>
+ <div class="right-details">
+
+ </div>
+ </div>
+
+ </footer>
+ </div>
+ <aside class="toc-drawer">
+
+
+ <div class="toc-sticky toc-scroll">
+ <div class="toc-title-container">
+ <span class="toc-title">
+ On this page
+ </span>
+ </div>
+ <div class="toc-tree-container">
+ <div class="toc-tree">
+ <ul>
+<li><a class="reference internal" href="#">Using Git Over Reticulum</a><ul>
+<li><a class="reference internal" href="#the-rngit-utility">The rngit Utility</a></li>
+<li><a class="reference internal" href="#repository-structure">Repository Structure</a></li>
+<li><a class="reference internal" href="#serving-pages-over-nomad-network">Serving Pages Over Nomad Network</a></li>
+<li><a class="reference internal" href="#formatting-syntax-highlighting">Formatting & Syntax Highlighting</a></li>
+<li><a class="reference internal" href="#customizing-templates">Customizing Templates</a></li>
+<li><a class="reference internal" href="#release-management">Release Management</a></li>
+</ul>
+</li>
+</ul>
+
+ </div>
+ </div>
+ </div>
+
+
+ </aside>
+ </div>
+</div><script src="_static/documentation_options.js?v=fd7cadf9"></script>
+ <script src="_static/doctools.js?v=9bcbadda"></script>
+ <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
+ <script src="_static/scripts/furo.js?v=46bd48cc"></script>
+ <script src="_static/clipboard.min.js?v=a7894cd8"></script>
+ <script src="_static/copybutton.js?v=f281be69"></script>
+ </body>
+</html>
\ No newline at end of file
diff --git a/docs/manual/hardware.html b/docs/manual/hardware.html
index 294385fb..3f11d395 100644
--- a/docs/manual/hardware.html
+++ b/docs/manual/hardware.html
@@ -7,7 +7,7 @@
<link rel="prefetch" href="_static/rns_logo_512.png" as="image">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25.dev1 -->
- <title>Communications Hardware - Reticulum Network Stack 1.2.1 documentation</title>
+ <title>Communications Hardware - Reticulum Network Stack 1.2.2 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
@@ -180,7 +180,7 @@
</label>
</div>
<div class="header-center">
- <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.1 documentation</div></a>
+ <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.2 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
@@ -204,7 +204,7 @@
<img class="sidebar-logo" src="_static/rns_logo_512.png" alt="Logo"/>
</div>
- <span class="sidebar-brand-text">Reticulum Network Stack 1.2.1 documentation</span>
+ <span class="sidebar-brand-text">Reticulum Network Stack 1.2.2 documentation</span>
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
@@ -674,7 +674,7 @@ can be used with Reticulum. This includes virtual software modems such as
</aside>
</div>
-</div><script src="_static/documentation_options.js?v=ca842793"></script>
+</div><script src="_static/documentation_options.js?v=fd7cadf9"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
diff --git a/docs/manual/index.html b/docs/manual/index.html
index dafcb8ee..f4fcff5e 100644
--- a/docs/manual/index.html
+++ b/docs/manual/index.html
@@ -7,7 +7,7 @@
<link rel="prefetch" href="_static/rns_logo_512.png" as="image">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25.dev1 -->
- <title>Reticulum Network Stack 1.2.1 documentation</title>
+ <title>Reticulum Network Stack 1.2.2 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
@@ -180,7 +180,7 @@
</label>
</div>
<div class="header-center">
- <a href="#"><div class="brand">Reticulum Network Stack 1.2.1 documentation</div></a>
+ <a href="#"><div class="brand">Reticulum Network Stack 1.2.2 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
@@ -204,7 +204,7 @@
<img class="sidebar-logo" src="_static/rns_logo_512.png" alt="Logo"/>
</div>
- <span class="sidebar-brand-text">Reticulum Network Stack 1.2.1 documentation</span>
+ <span class="sidebar-brand-text">Reticulum Network Stack 1.2.2 documentation</span>
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
@@ -222,6 +222,7 @@
<li class="toctree-l1"><a class="reference internal" href="hardware.html">Communications Hardware</a></li>
<li class="toctree-l1"><a class="reference internal" href="interfaces.html">Configuring Interfaces</a></li>
<li class="toctree-l1"><a class="reference internal" href="networks.html">Building Networks</a></li>
+<li class="toctree-l1"><a class="reference internal" href="git.html">Using Git Over Reticulum</a></li>
<li class="toctree-l1"><a class="reference internal" href="support.html">Support Reticulum</a></li>
<li class="toctree-l1"><a class="reference internal" href="examples.html">Code Examples</a></li>
<li class="toctree-l1"><a class="reference internal" href="license.html">Reticulum License</a></li>
@@ -523,6 +524,15 @@ to participate in the development of Reticulum itself.</p>
</li>
</ul>
</li>
+<li class="toctree-l1"><a class="reference internal" href="git.html">Using Git Over Reticulum</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="git.html#the-rngit-utility">The rngit Utility</a></li>
+<li class="toctree-l2"><a class="reference internal" href="git.html#repository-structure">Repository Structure</a></li>
+<li class="toctree-l2"><a class="reference internal" href="git.html#serving-pages-over-nomad-network">Serving Pages Over Nomad Network</a></li>
+<li class="toctree-l2"><a class="reference internal" href="git.html#formatting-syntax-highlighting">Formatting & Syntax Highlighting</a></li>
+<li class="toctree-l2"><a class="reference internal" href="git.html#customizing-templates">Customizing Templates</a></li>
+<li class="toctree-l2"><a class="reference internal" href="git.html#release-management">Release Management</a></li>
+</ul>
+</li>
<li class="toctree-l1"><a class="reference internal" href="support.html">Support Reticulum</a><ul>
<li class="toctree-l2"><a class="reference internal" href="support.html#donations">Donations</a></li>
<li class="toctree-l2"><a class="reference internal" href="support.html#provide-feedback">Provide Feedback</a></li>
@@ -633,7 +643,7 @@ to participate in the development of Reticulum itself.</p>
</aside>
</div>
-</div><script src="_static/documentation_options.js?v=ca842793"></script>
+</div><script src="_static/documentation_options.js?v=fd7cadf9"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
diff --git a/docs/manual/interfaces.html b/docs/manual/interfaces.html
index 6cf12fdf..0355023b 100644
--- a/docs/manual/interfaces.html
+++ b/docs/manual/interfaces.html
@@ -7,7 +7,7 @@
<link rel="prefetch" href="_static/rns_logo_512.png" as="image">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25.dev1 -->
- <title>Configuring Interfaces - Reticulum Network Stack 1.2.1 documentation</title>
+ <title>Configuring Interfaces - Reticulum Network Stack 1.2.2 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
@@ -180,7 +180,7 @@
</label>
</div>
<div class="header-center">
- <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.1 documentation</div></a>
+ <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.2 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
@@ -204,7 +204,7 @@
<img class="sidebar-logo" src="_static/rns_logo_512.png" alt="Logo"/>
</div>
- <span class="sidebar-brand-text">Reticulum Network Stack 1.2.1 documentation</span>
+ <span class="sidebar-brand-text">Reticulum Network Stack 1.2.2 documentation</span>
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
@@ -1684,7 +1684,7 @@ to <code class="docutils literal notranslate"><span class="pre">30</span></code>
</aside>
</div>
-</div><script src="_static/documentation_options.js?v=ca842793"></script>
+</div><script src="_static/documentation_options.js?v=fd7cadf9"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
diff --git a/docs/manual/license.html b/docs/manual/license.html
index 01bcd1cd..ac369109 100644
--- a/docs/manual/license.html
+++ b/docs/manual/license.html
@@ -7,7 +7,7 @@
<link rel="prefetch" href="_static/rns_logo_512.png" as="image">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25.dev1 -->
- <title>Reticulum License - Reticulum Network Stack 1.2.1 documentation</title>
+ <title>Reticulum License - Reticulum Network Stack 1.2.2 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
@@ -180,7 +180,7 @@
</label>
</div>
<div class="header-center">
- <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.1 documentation</div></a>
+ <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.2 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
@@ -204,7 +204,7 @@
<img class="sidebar-logo" src="_static/rns_logo_512.png" alt="Logo"/>
</div>
- <span class="sidebar-brand-text">Reticulum Network Stack 1.2.1 documentation</span>
+ <span class="sidebar-brand-text">Reticulum Network Stack 1.2.2 documentation</span>
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
@@ -343,7 +343,7 @@ SOFTWARE.
</aside>
</div>
-</div><script src="_static/documentation_options.js?v=ca842793"></script>
+</div><script src="_static/documentation_options.js?v=fd7cadf9"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
diff --git a/docs/manual/networks.html b/docs/manual/networks.html
index feb75977..bad7abb0 100644
--- a/docs/manual/networks.html
+++ b/docs/manual/networks.html
@@ -7,7 +7,7 @@
<link rel="prefetch" href="_static/rns_logo_512.png" as="image">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25.dev1 -->
- <title>Building Networks - Reticulum Network Stack 1.2.1 documentation</title>
+ <title>Building Networks - Reticulum Network Stack 1.2.2 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
@@ -180,7 +180,7 @@
</label>
</div>
<div class="header-center">
- <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.1 documentation</div></a>
+ <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.2 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
@@ -204,7 +204,7 @@
<img class="sidebar-logo" src="_static/rns_logo_512.png" alt="Logo"/>
</div>
- <span class="sidebar-brand-text">Reticulum Network Stack 1.2.1 documentation</span>
+ <span class="sidebar-brand-text">Reticulum Network Stack 1.2.2 documentation</span>
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
@@ -662,7 +662,7 @@ differently than a mobile device roaming between radio cells.</p>
</aside>
</div>
-</div><script src="_static/documentation_options.js?v=ca842793"></script>
+</div><script src="_static/documentation_options.js?v=fd7cadf9"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
diff --git a/docs/manual/objects.inv b/docs/manual/objects.inv
index 5590bebf..91ca69c1 100644
Binary files a/docs/manual/objects.inv and b/docs/manual/objects.inv differ
diff --git a/docs/manual/reference.html b/docs/manual/reference.html
index 0e5dd167..b94b0a06 100644
--- a/docs/manual/reference.html
+++ b/docs/manual/reference.html
@@ -7,7 +7,7 @@
<link rel="prefetch" href="_static/rns_logo_512.png" as="image">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25.dev1 -->
- <title>API Reference - Reticulum Network Stack 1.2.1 documentation</title>
+ <title>API Reference - Reticulum Network Stack 1.2.2 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
@@ -180,7 +180,7 @@
</label>
</div>
<div class="header-center">
- <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.1 documentation</div></a>
+ <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.2 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
@@ -204,7 +204,7 @@
<img class="sidebar-logo" src="_static/rns_logo_512.png" alt="Logo"/>
</div>
- <span class="sidebar-brand-text">Reticulum Network Stack 1.2.1 documentation</span>
+ <span class="sidebar-brand-text">Reticulum Network Stack 1.2.2 documentation</span>
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
@@ -2472,7 +2472,7 @@ will announce it.</p>
</aside>
</div>
-</div><script src="_static/documentation_options.js?v=ca842793"></script>
+</div><script src="_static/documentation_options.js?v=fd7cadf9"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
diff --git a/docs/manual/search.html b/docs/manual/search.html
index 0edcc3a5..451d2c75 100644
--- a/docs/manual/search.html
+++ b/docs/manual/search.html
@@ -8,7 +8,7 @@
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25.dev1 -->
<meta name="robots" content="noindex" />
-<title>Search - Reticulum Network Stack 1.2.1 documentation</title><link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
+<title>Search - Reticulum Network Stack 1.2.2 documentation</title><link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
<link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=8dab3a3b" />
@@ -180,7 +180,7 @@
</label>
</div>
<div class="header-center">
- <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.1 documentation</div></a>
+ <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.2 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
@@ -204,7 +204,7 @@
<img class="sidebar-logo" src="_static/rns_logo_512.png" alt="Logo"/>
</div>
- <span class="sidebar-brand-text">Reticulum Network Stack 1.2.1 documentation</span>
+ <span class="sidebar-brand-text">Reticulum Network Stack 1.2.2 documentation</span>
</a><form class="sidebar-search-container" method="get" action="#" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
@@ -222,6 +222,7 @@
<li class="toctree-l1"><a class="reference internal" href="hardware.html">Communications Hardware</a></li>
<li class="toctree-l1"><a class="reference internal" href="interfaces.html">Configuring Interfaces</a></li>
<li class="toctree-l1"><a class="reference internal" href="networks.html">Building Networks</a></li>
+<li class="toctree-l1"><a class="reference internal" href="git.html">Using Git Over Reticulum</a></li>
<li class="toctree-l1"><a class="reference internal" href="support.html">Support Reticulum</a></li>
<li class="toctree-l1"><a class="reference internal" href="examples.html">Code Examples</a></li>
<li class="toctree-l1"><a class="reference internal" href="license.html">Reticulum License</a></li>
@@ -302,7 +303,7 @@
</aside>
</div>
-</div><script src="_static/documentation_options.js?v=ca842793"></script>
+</div><script src="_static/documentation_options.js?v=fd7cadf9"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
diff --git a/docs/manual/searchindex.js b/docs/manual/searchindex.js
index dd329c28..7782e022 100644
--- a/docs/manual/searchindex.js
+++ b/docs/manual/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"alltitles":{"A Carrier-Grade Fallacy":[[14,"a-carrier-grade-fallacy"]],"API Reference":[[8,null]],"ARM64":[[2,"arm64"]],"AX.25 KISS Interface":[[5,"ax-25-kiss-interface"]],"Adding Radio Interfaces":[[2,"adding-radio-interfaces"]],"An Explanation of Reticulum for Human Beings":[[1,null]],"Anchor In The Flow":[[14,"anchor-in-the-flow"]],"Android":[[2,"android"]],"Announce":[[0,"announce"]],"Announce Propagation Rules":[[11,"announce-propagation-rules"]],"Announce Rate Control":[[5,"announce-rate-control"]],"Announcing Presence":[[14,"announcing-presence"]],"Auto Interface":[[5,"auto-interface"]],"Automated List Sourcing":[[12,"automated-list-sourcing"]],"Backbone Interface":[[5,"backbone-interface"]],"Blackhole Management":[[12,"blackhole-management"]],"Bootstrapping Connectivity":[[2,"bootstrapping-connectivity"]],"Broadcast":[[0,"broadcast"]],"Buffer":[[0,"buffer"]],"Build Personal Infrastructure":[[2,"build-personal-infrastructure"]],"Building Networks":[[7,null]],"Channel":[[0,"channel"]],"Code Examples":[[0,null]],"Columba":[[9,"columba"]],"Combining Hardware Types":[[3,"combining-hardware-types"]],"Common Interface Options":[[5,"common-interface-options"]],"Communications Hardware":[[3,null]],"Concepts & Overview":[[7,"concepts-overview"]],"Conceptual Overview":[[11,"conceptual-overview"]],"Configuration & Data":[[12,"configuration-data"]],"Configuring Interfaces":[[5,null]],"Connect to the Distributed Backbone":[[2,"connect-to-the-distributed-backbone"]],"Connecting Remotes":[[5,"connecting-remotes"]],"Connecting Reticulum Instances Over the Internet":[[2,"connecting-reticulum-instances-over-the-internet"]],"Contributing to the Global Ret":[[2,"contributing-to-the-global-ret"]],"Cost Of A Byte":[[14,"cost-of-a-byte"]],"Creating RNodes":[[3,"creating-rnodes"]],"Creating a Network With Reticulum":[[2,"creating-a-network-with-reticulum"]],"Creating and Using Custom Interfaces":[[2,"creating-and-using-custom-interfaces"]],"Creating and Using a Network Identity":[[11,"creating-and-using-a-network-identity"]],"Cryptographic Primitives":[[11,"cryptographic-primitives"]],"Current Status":[[13,"current-status"]],"Current Usage":[[11,"current-usage"]],"Custom Interfaces":[[0,"custom-interfaces"],[5,"custom-interfaces"]],"Death To The Address":[[14,"death-to-the-address"]],"Debian Bookworm":[[2,"debian-bookworm"]],"Decentralization Or Uncentralizability?":[[14,"decentralization-or-uncentralizability"]],"Design Patterns For Post-IP Systems":[[14,"design-patterns-for-post-ip-systems"]],"Destination Naming":[[11,"destination-naming"]],"Destinations":[[11,"destinations"]],"Destinations, Not Addresses":[[7,"destinations-not-addresses"]],"Develop a Program with Reticulum":[[2,"develop-a-program-with-reticulum"]],"Discoverable Interfaces":[[5,"discoverable-interfaces"]],"Discovering Interfaces":[[12,"discovering-interfaces"]],"Discovery Parameters":[[5,"discovery-parameters"]],"Donations":[[10,"donations"]],"Echo":[[0,"echo"]],"Emergent Patterns":[[14,"emergent-patterns"]],"Enabling Discovery":[[5,"enabling-discovery"]],"Encryption Is Not A Feature":[[14,"encryption-is-not-a-feature"]],"Ethernet-based Hardware":[[3,"ethernet-based-hardware"]],"Ethics Of The Tool":[[14,"ethics-of-the-tool"]],"Example Configuration":[[5,"example-configuration"]],"Fabric Of The Independent":[[14,"fabric-of-the-independent"]],"Fallacy Of The Cloud":[[14,"fallacy-of-the-cloud"]],"Filetransfer":[[0,"filetransfer"]],"Finding Your Way":[[2,"finding-your-way"]],"Fixed Serial Port Names":[[12,"fixed-serial-port-names"]],"Flow & Time":[[14,"flow-time"]],"Future Implications":[[11,"future-implications"]],"Getting Further":[[11,"getting-further"]],"Getting Started Fast":[[2,null]],"Goals":[[11,"goals"]],"Heltec LoRa32 v2.0":[[3,"heltec-lora32-v2-0"]],"Heltec LoRa32 v3.0":[[3,"heltec-lora32-v3-0"]],"Heltec LoRa32 v4.0":[[3,"heltec-lora32-v4-0"]],"Heltec T114":[[3,"heltec-t114"]],"Heterogeneous Connectivity":[[7,"heterogeneous-connectivity"]],"Hostile Environments":[[14,"hostile-environments"]],"Hosting Public Entrypoints":[[2,"hosting-public-entrypoints"]],"I2P Interface":[[5,"i2p-interface"]],"Identification":[[0,"example-identify"]],"Identities":[[11,"understanding-identities"]],"Identity and Nomadism":[[14,"identity-and-nomadism"]],"Improving System Configuration":[[12,"improving-system-configuration"]],"Included Utility Programs":[[12,"included-utility-programs"]],"Indices and Tables":[[4,"indices-and-tables"]],"Installation":[[3,"installation"]],"Interface Access Codes":[[11,"interface-access-codes"]],"Interface Modes":[[5,"interface-modes"],[5,"interfaces-modes"]],"Interface Modules & Connectivity Resources":[[9,"interface-modules-connectivity-resources"]],"Interface Types and Devices":[[13,"interface-types-and-devices"]],"Introduction & Basic Functionality":[[11,"introduction-basic-functionality"]],"Introductory Considerations":[[7,"introductory-considerations"]],"KISS Interface":[[5,"kiss-interface"]],"LXMF":[[9,"lxmf"]],"LXMF Interactive Client":[[9,"lxmf-interactive-client"]],"LXMFy":[[9,"lxmfy"]],"LXST":[[9,"id17"]],"LXST Phone":[[9,"lxst-phone"]],"Liberation From Limits":[[14,"liberation-from-limits"]],"LilyGO LoRa32 v1.0":[[3,"lilygo-lora32-v1-0"]],"LilyGO LoRa32 v2.0":[[3,"lilygo-lora32-v2-0"]],"LilyGO LoRa32 v2.1":[[3,"lilygo-lora32-v2-1"]],"LilyGO T-Beam":[[3,"lilygo-t-beam"]],"LilyGO T-Beam Supreme":[[3,"lilygo-t-beam-supreme"]],"LilyGO T-Deck":[[3,"lilygo-t-deck"]],"LilyGO T-Echo":[[3,"lilygo-t-echo"]],"LilyGO T3S3":[[3,"lilygo-t3s3"]],"Link":[[0,"link"]],"Link Establishment in Detail":[[11,"link-establishment-in-detail"]],"Listeners":[[5,"listeners"]],"Local Blackhole Management":[[12,"local-blackhole-management"]],"MacOS":[[2,"macos"]],"Merits Of Scarcity":[[14,"merits-of-scarcity"]],"MeshChat":[[9,"meshchat"]],"MeshChatX":[[9,"meshchatx"]],"Micron Parser JS":[[9,"micron-parser-js"]],"Minimal":[[0,"minimal"]],"Mixing Strategies":[[2,"mixing-strategies"]],"Motivation":[[11,"motivation"]],"Naming Is Power":[[14,"naming-is-power"]],"Network Health & Responsibility":[[2,"network-health-responsibility"]],"Network Identities":[[11,"network-identities"]],"New Destination Rate Limiting":[[5,"new-destination-rate-limiting"]],"Node Types":[[11,"node-types"]],"Nomad Network":[[9,"nomad-network"]],"Open Sky":[[14,"open-sky"]],"OpenCom XL":[[3,"opencom-xl"]],"OpenWRT":[[2,"openwrt"]],"Packet Prioritisation":[[11,"packet-prioritisation"]],"Packet Radio Modems":[[3,"packet-radio-modems"]],"Personal Infrastructure":[[14,"personal-infrastructure"]],"Physics Of Trust":[[14,"physics-of-trust"]],"Pipe Interface":[[5,"pipe-interface"]],"Platform-Specific Install Notes":[[2,"platform-specific-install-notes"]],"Portable Existence":[[14,"portable-existence"]],"Preserving Human Agency":[[14,"preserving-human-agency"]],"Programs & Utilities":[[9,"programs-utilities"]],"Programs Using Reticulum":[[9,null]],"Protocol Specifics":[[11,"protocol-specifics"]],"Protocols":[[9,"protocols"]],"Provide Feedback":[[10,"provide-feedback"]],"Public Domain Protocol":[[14,"public-domain-protocol"]],"Public Key Announcements":[[11,"public-key-announcements"]],"Publishing Blackhole Lists":[[12,"publishing-blackhole-lists"]],"Pure-Python Reticulum":[[2,"pure-python-reticulum"]],"RAK4631-based Boards":[[3,"rak4631-based-boards"]],"RBrowser":[[9,"rbrowser"]],"RISC-V":[[2,"risc-v"]],"RNMon":[[9,"rnmon"]],"RNS FileSync":[[9,"rns-filesync"]],"RNS Page Node":[[9,"rns-page-node"]],"RNode":[[3,"rnode"]],"RNode LoRa Interface":[[5,"rnode-lora-interface"]],"RNode Multi Interface":[[5,"rnode-multi-interface"]],"RRC":[[9,"rrc"]],"Raspberry Pi":[[2,"raspberry-pi"]],"Reaching the Destination":[[11,"reaching-the-destination"]],"Reference Implementation":[[13,"reference-implementation"]],"Reference Setup":[[11,"reference-setup"]],"Remote Management":[[12,"remote-management"]],"Remote Shell":[[9,"remote-shell"]],"Requests & Responses":[[0,"requests-responses"]],"Resolving Dependency & Installation Issues":[[2,"resolving-dependency-installation-issues"]],"Resources":[[11,"resources"]],"RetiBBS":[[9,"retibbs"]],"Reticulum License":[[6,null]],"Reticulum Network Stack Manual":[[4,null]],"Reticulum Network Telephone":[[9,"reticulum-network-telephone"]],"Reticulum Relay Chat":[[9,"reticulum-relay-chat"]],"Reticulum Transport":[[11,"reticulum-transport"]],"Reticulum as a System Service":[[12,"reticulum-as-a-system-service"]],"Retipedia":[[9,"retipedia"]],"Roaming Nodes":[[14,"roaming-nodes"]],"Security Considerations":[[5,"security-considerations"]],"Serial Interface":[[5,"serial-interface"]],"Serial Lines & Devices":[[3,"serial-lines-devices"]],"Sideband":[[9,"sideband"]],"Sovereignty Through Infrastructure":[[14,"sovereignty-through-infrastructure"]],"Standalone Reticulum Installation":[[2,"standalone-reticulum-installation"]],"Store & Forward":[[14,"store-forward"]],"Support Reticulum":[[10,null]],"Supported Boards and Devices":[[3,"supported-boards-and-devices"]],"Systemwide Service":[[12,"systemwide-service"]],"TCP Client Interface":[[5,"tcp-client-interface"]],"TCP Server Interface":[[5,"tcp-server-interface"]],"Table Of Contents":[[4,"table-of-contents"]],"The Ability To Disconnect":[[14,"the-ability-to-disconnect"]],"The Announce Mechanism in Detail":[[11,"the-announce-mechanism-in-detail"]],"The Bandwidth Fallacy":[[14,"the-bandwidth-fallacy"]],"The Harm Principle":[[14,"the-harm-principle"]],"The Illusion Of The Center":[[14,"the-illusion-of-the-center"]],"The Interface Is The Medium":[[14,"the-interface-is-the-medium"]],"The Work Is Finished":[[14,"the-work-is-finished"]],"The rncp Utility":[[12,"the-rncp-utility"]],"The rngit Utility":[[12,"the-rngit-utility"]],"The rnid Utility":[[12,"the-rnid-utility"]],"The rnodeconf Utility":[[12,"the-rnodeconf-utility"]],"The rnpath Utility":[[12,"the-rnpath-utility"]],"The rnprobe Utility":[[12,"the-rnprobe-utility"]],"The rnsd Utility":[[12,"the-rnsd-utility"]],"The rnsh Utility":[[12,"the-rnsh-utility"]],"The rnstatus Utility":[[12,"the-rnstatus-utility"]],"The rnx Utility":[[12,"the-rnx-utility"]],"Transport Nodes and Instances":[[7,"transport-nodes-and-instances"]],"Trustless Networking":[[7,"trustless-networking"]],"Try Using a Reticulum-based Program":[[2,"try-using-a-reticulum-based-program"]],"UDP Interface":[[5,"udp-interface"]],"Ubuntu Lunar":[[2,"ubuntu-lunar"]],"Understanding Reticulum":[[11,null]],"Unsigned RNode v2.x":[[3,"unsigned-rnode-v2-x"]],"Usage with Reticulum":[[3,"usage-with-reticulum"]],"Userspace Service":[[12,"userspace-service"]],"Using Reticulum on Your System":[[12,null]],"Using the Included Utilities":[[2,"using-the-included-utilities"]],"What does Reticulum Offer?":[[13,"what-does-reticulum-offer"]],"What is Reticulum?":[[13,null]],"Where can Reticulum be Used?":[[13,"where-can-reticulum-be-used"]],"WiFi-based Hardware":[[3,"wifi-based-hardware"]],"Windows":[[2,"windows"]],"Wire Format":[[11,"wire-format"]],"Zen of Reticulum":[[14,null]],"Zero-Trust Architectures":[[14,"zero-trust-architectures"]]},"docnames":["examples","forhumans","gettingstartedfast","hardware","index","interfaces","license","networks","reference","software","support","understanding","using","whatis","zen"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["examples.rst","forhumans.rst","gettingstartedfast.rst","hardware.rst","index.rst","interfaces.rst","license.rst","networks.rst","reference.rst","software.rst","support.rst","understanding.rst","using.rst","whatis.rst","zen.rst"],"indexentries":{"__init__() (rns.rawchannelreader method)":[[8,"RNS.RawChannelReader.__init__",false]],"__init__() (rns.rawchannelwriter method)":[[8,"RNS.RawChannelWriter.__init__",false]],"accepts_links() (rns.destination method)":[[8,"RNS.Destination.accepts_links",false]],"add_message_handler() (rns.channel.channel method)":[[8,"RNS.Channel.Channel.add_message_handler",false]],"add_ready_callback() (rns.rawchannelreader method)":[[8,"RNS.RawChannelReader.add_ready_callback",false]],"advertise() (rns.resource method)":[[8,"RNS.Resource.advertise",false]],"announce() (rns.destination method)":[[8,"RNS.Destination.announce",false]],"announce_cap (rns.reticulum attribute)":[[8,"RNS.Reticulum.ANNOUNCE_CAP",false]],"app_and_aspects_from_name() (rns.destination static method)":[[8,"RNS.Destination.app_and_aspects_from_name",false]],"await_path() (rns.transport static method)":[[8,"RNS.Transport.await_path",false]],"blackhole_sources() (rns.reticulum static method)":[[8,"RNS.Reticulum.blackhole_sources",false]],"buffer (class in rns)":[[8,"RNS.Buffer",false]],"cancel() (rns.resource method)":[[8,"RNS.Resource.cancel",false]],"channel (class in rns.channel)":[[8,"RNS.Channel.Channel",false]],"clear_default_app_data() (rns.destination method)":[[8,"RNS.Destination.clear_default_app_data",false]],"concluded() (rns.requestreceipt method)":[[8,"RNS.RequestReceipt.concluded",false]],"create_bidirectional_buffer() (rns.buffer static method)":[[8,"RNS.Buffer.create_bidirectional_buffer",false]],"create_keys() (rns.destination method)":[[8,"RNS.Destination.create_keys",false]],"create_reader() (rns.buffer static method)":[[8,"RNS.Buffer.create_reader",false]],"create_writer() (rns.buffer static method)":[[8,"RNS.Buffer.create_writer",false]],"current_ratchet_id() (rns.identity static method)":[[8,"RNS.Identity.current_ratchet_id",false]],"curve (rns.identity attribute)":[[8,"RNS.Identity.CURVE",false]],"curve (rns.link attribute)":[[8,"RNS.Link.CURVE",false]],"decrypt() (rns.destination method)":[[8,"RNS.Destination.decrypt",false]],"decrypt() (rns.identity method)":[[8,"RNS.Identity.decrypt",false]],"deregister_announce_handler() (rns.transport static method)":[[8,"RNS.Transport.deregister_announce_handler",false]],"deregister_request_handler() (rns.destination method)":[[8,"RNS.Destination.deregister_request_handler",false]],"destination (class in rns)":[[8,"RNS.Destination",false]],"discovered_interfaces() (rns.reticulum static method)":[[8,"RNS.Reticulum.discovered_interfaces",false]],"enable_ratchets() (rns.destination method)":[[8,"RNS.Destination.enable_ratchets",false]],"encrypt() (rns.destination method)":[[8,"RNS.Destination.encrypt",false]],"encrypt() (rns.identity method)":[[8,"RNS.Identity.encrypt",false]],"encrypted_mdu (rns.packet attribute)":[[8,"RNS.Packet.ENCRYPTED_MDU",false]],"enforce_ratchets() (rns.destination method)":[[8,"RNS.Destination.enforce_ratchets",false]],"establishment_timeout_per_hop (rns.link attribute)":[[8,"RNS.Link.ESTABLISHMENT_TIMEOUT_PER_HOP",false]],"expand_name() (rns.destination static method)":[[8,"RNS.Destination.expand_name",false]],"from_bytes() (rns.identity static method)":[[8,"RNS.Identity.from_bytes",false]],"from_file() (rns.identity static method)":[[8,"RNS.Identity.from_file",false]],"full_hash() (rns.identity static method)":[[8,"RNS.Identity.full_hash",false]],"get_age() (rns.link method)":[[8,"RNS.Link.get_age",false]],"get_channel() (rns.link method)":[[8,"RNS.Link.get_channel",false]],"get_data_size() (rns.resource method)":[[8,"RNS.Resource.get_data_size",false]],"get_establishment_rate() (rns.link method)":[[8,"RNS.Link.get_establishment_rate",false]],"get_expected_rate() (rns.link method)":[[8,"RNS.Link.get_expected_rate",false]],"get_hash() (rns.resource method)":[[8,"RNS.Resource.get_hash",false]],"get_instance() (rns.reticulum static method)":[[8,"RNS.Reticulum.get_instance",false]],"get_mdu() (rns.link method)":[[8,"RNS.Link.get_mdu",false]],"get_mode() (rns.link method)":[[8,"RNS.Link.get_mode",false]],"get_mtu() (rns.link method)":[[8,"RNS.Link.get_mtu",false]],"get_parts() (rns.resource method)":[[8,"RNS.Resource.get_parts",false]],"get_private_key() (rns.destination method)":[[8,"RNS.Destination.get_private_key",false]],"get_private_key() (rns.identity method)":[[8,"RNS.Identity.get_private_key",false]],"get_progress() (rns.requestreceipt method)":[[8,"RNS.RequestReceipt.get_progress",false]],"get_progress() (rns.resource method)":[[8,"RNS.Resource.get_progress",false]],"get_public_key() (rns.identity method)":[[8,"RNS.Identity.get_public_key",false]],"get_q() (rns.link method)":[[8,"RNS.Link.get_q",false]],"get_q() (rns.packet method)":[[8,"RNS.Packet.get_q",false]],"get_random_hash() (rns.identity static method)":[[8,"RNS.Identity.get_random_hash",false]],"get_remote_identity() (rns.link method)":[[8,"RNS.Link.get_remote_identity",false]],"get_request_id() (rns.requestreceipt method)":[[8,"RNS.RequestReceipt.get_request_id",false]],"get_response() (rns.requestreceipt method)":[[8,"RNS.RequestReceipt.get_response",false]],"get_response_time() (rns.requestreceipt method)":[[8,"RNS.RequestReceipt.get_response_time",false]],"get_rssi() (rns.link method)":[[8,"RNS.Link.get_rssi",false]],"get_rssi() (rns.packet method)":[[8,"RNS.Packet.get_rssi",false]],"get_rtt() (rns.packetreceipt method)":[[8,"RNS.PacketReceipt.get_rtt",false]],"get_segments() (rns.resource method)":[[8,"RNS.Resource.get_segments",false]],"get_snr() (rns.link method)":[[8,"RNS.Link.get_snr",false]],"get_snr() (rns.packet method)":[[8,"RNS.Packet.get_snr",false]],"get_status() (rns.packetreceipt method)":[[8,"RNS.PacketReceipt.get_status",false]],"get_status() (rns.requestreceipt method)":[[8,"RNS.RequestReceipt.get_status",false]],"get_transfer_size() (rns.resource method)":[[8,"RNS.Resource.get_transfer_size",false]],"has_path() (rns.transport static method)":[[8,"RNS.Transport.has_path",false]],"hash() (rns.destination static method)":[[8,"RNS.Destination.hash",false]],"hash_from_name_and_identity() (rns.destination static method)":[[8,"RNS.Destination.hash_from_name_and_identity",false]],"hops_to() (rns.transport static method)":[[8,"RNS.Transport.hops_to",false]],"identify() (rns.link method)":[[8,"RNS.Link.identify",false]],"identity (class in rns)":[[8,"RNS.Identity",false]],"inactive_for() (rns.link method)":[[8,"RNS.Link.inactive_for",false]],"interface_discovery_sources() (rns.reticulum static method)":[[8,"RNS.Reticulum.interface_discovery_sources",false]],"is_compressed() (rns.resource method)":[[8,"RNS.Resource.is_compressed",false]],"is_ready_to_send() (rns.channel.channel method)":[[8,"RNS.Channel.Channel.is_ready_to_send",false]],"keepalive (rns.link attribute)":[[8,"RNS.Link.KEEPALIVE",false]],"keepalive_timeout_factor (rns.link attribute)":[[8,"RNS.Link.KEEPALIVE_TIMEOUT_FACTOR",false]],"keysize (rns.identity attribute)":[[8,"RNS.Identity.KEYSIZE",false]],"link (class in rns)":[[8,"RNS.Link",false]],"link_mtu_discovery (rns.reticulum attribute)":[[8,"RNS.Reticulum.LINK_MTU_DISCOVERY",false]],"link_mtu_discovery() (rns.reticulum static method)":[[8,"RNS.Reticulum.link_mtu_discovery",false]],"load_private_key() (rns.destination method)":[[8,"RNS.Destination.load_private_key",false]],"load_private_key() (rns.identity method)":[[8,"RNS.Identity.load_private_key",false]],"load_public_key() (rns.identity method)":[[8,"RNS.Identity.load_public_key",false]],"mdu (rns.channel.channel property)":[[8,"RNS.Channel.Channel.mdu",false]],"messagebase (class in rns)":[[8,"RNS.MessageBase",false]],"minimum_bitrate (rns.reticulum attribute)":[[8,"RNS.Reticulum.MINIMUM_BITRATE",false]],"msgtype (rns.messagebase attribute)":[[8,"RNS.MessageBase.MSGTYPE",false]],"mtu (rns.reticulum attribute)":[[8,"RNS.Reticulum.MTU",false]],"next_hop() (rns.transport static method)":[[8,"RNS.Transport.next_hop",false]],"next_hop_interface() (rns.transport static method)":[[8,"RNS.Transport.next_hop_interface",false]],"no_data_for() (rns.link method)":[[8,"RNS.Link.no_data_for",false]],"no_inbound_for() (rns.link method)":[[8,"RNS.Link.no_inbound_for",false]],"no_outbound_for() (rns.link method)":[[8,"RNS.Link.no_outbound_for",false]],"pack() (rns.messagebase method)":[[8,"RNS.MessageBase.pack",false]],"packet (class in rns)":[[8,"RNS.Packet",false]],"packetreceipt (class in rns)":[[8,"RNS.PacketReceipt",false]],"pathfinder_m (rns.transport attribute)":[[8,"RNS.Transport.PATHFINDER_M",false]],"plain_mdu (rns.packet attribute)":[[8,"RNS.Packet.PLAIN_MDU",false]],"publish_blackhole_enabled() (rns.reticulum static method)":[[8,"RNS.Reticulum.publish_blackhole_enabled",false]],"ratchet_count (rns.destination attribute)":[[8,"RNS.Destination.RATCHET_COUNT",false]],"ratchet_expiry (rns.identity attribute)":[[8,"RNS.Identity.RATCHET_EXPIRY",false]],"ratchet_interval (rns.destination attribute)":[[8,"RNS.Destination.RATCHET_INTERVAL",false]],"ratchetsize (rns.identity attribute)":[[8,"RNS.Identity.RATCHETSIZE",false]],"rawchannelreader (class in rns)":[[8,"RNS.RawChannelReader",false]],"rawchannelwriter (class in rns)":[[8,"RNS.RawChannelWriter",false]],"recall() (rns.identity static method)":[[8,"RNS.Identity.recall",false]],"recall_app_data() (rns.identity static method)":[[8,"RNS.Identity.recall_app_data",false]],"register_announce_handler() (rns.transport static method)":[[8,"RNS.Transport.register_announce_handler",false]],"register_message_type() (rns.channel.channel method)":[[8,"RNS.Channel.Channel.register_message_type",false]],"register_request_handler() (rns.destination method)":[[8,"RNS.Destination.register_request_handler",false]],"remote_management_enabled() (rns.reticulum static method)":[[8,"RNS.Reticulum.remote_management_enabled",false]],"remove_message_handler() (rns.channel.channel method)":[[8,"RNS.Channel.Channel.remove_message_handler",false]],"remove_ready_callback() (rns.rawchannelreader method)":[[8,"RNS.RawChannelReader.remove_ready_callback",false]],"request() (rns.link method)":[[8,"RNS.Link.request",false]],"request_path() (rns.transport static method)":[[8,"RNS.Transport.request_path",false]],"requestreceipt (class in rns)":[[8,"RNS.RequestReceipt",false]],"required_discovery_value() (rns.reticulum static method)":[[8,"RNS.Reticulum.required_discovery_value",false]],"resend() (rns.packet method)":[[8,"RNS.Packet.resend",false]],"resource (class in rns)":[[8,"RNS.Resource",false]],"reticulum (class in rns)":[[8,"RNS.Reticulum",false]],"send() (rns.channel.channel method)":[[8,"RNS.Channel.Channel.send",false]],"send() (rns.packet method)":[[8,"RNS.Packet.send",false]],"set_default_app_data() (rns.destination method)":[[8,"RNS.Destination.set_default_app_data",false]],"set_delivery_callback() (rns.packetreceipt method)":[[8,"RNS.PacketReceipt.set_delivery_callback",false]],"set_link_closed_callback() (rns.link method)":[[8,"RNS.Link.set_link_closed_callback",false]],"set_link_established_callback() (rns.destination method)":[[8,"RNS.Destination.set_link_established_callback",false]],"set_packet_callback() (rns.destination method)":[[8,"RNS.Destination.set_packet_callback",false]],"set_packet_callback() (rns.link method)":[[8,"RNS.Link.set_packet_callback",false]],"set_proof_requested_callback() (rns.destination method)":[[8,"RNS.Destination.set_proof_requested_callback",false]],"set_proof_strategy() (rns.destination method)":[[8,"RNS.Destination.set_proof_strategy",false]],"set_ratchet_interval() (rns.destination method)":[[8,"RNS.Destination.set_ratchet_interval",false]],"set_remote_identified_callback() (rns.link method)":[[8,"RNS.Link.set_remote_identified_callback",false]],"set_resource_callback() (rns.link method)":[[8,"RNS.Link.set_resource_callback",false]],"set_resource_concluded_callback() (rns.link method)":[[8,"RNS.Link.set_resource_concluded_callback",false]],"set_resource_started_callback() (rns.link method)":[[8,"RNS.Link.set_resource_started_callback",false]],"set_resource_strategy() (rns.link method)":[[8,"RNS.Link.set_resource_strategy",false]],"set_retained_ratchets() (rns.destination method)":[[8,"RNS.Destination.set_retained_ratchets",false]],"set_timeout() (rns.packetreceipt method)":[[8,"RNS.PacketReceipt.set_timeout",false]],"set_timeout_callback() (rns.packetreceipt method)":[[8,"RNS.PacketReceipt.set_timeout_callback",false]],"should_use_implicit_proof() (rns.reticulum static method)":[[8,"RNS.Reticulum.should_use_implicit_proof",false]],"sign() (rns.destination method)":[[8,"RNS.Destination.sign",false]],"sign() (rns.identity method)":[[8,"RNS.Identity.sign",false]],"stale_grace (rns.link attribute)":[[8,"RNS.Link.STALE_GRACE",false]],"stale_time (rns.link attribute)":[[8,"RNS.Link.STALE_TIME",false]],"teardown() (rns.link method)":[[8,"RNS.Link.teardown",false]],"to_file() (rns.identity method)":[[8,"RNS.Identity.to_file",false]],"track_phy_stats() (rns.link method)":[[8,"RNS.Link.track_phy_stats",false]],"transport (class in rns)":[[8,"RNS.Transport",false]],"transport_enabled() (rns.reticulum static method)":[[8,"RNS.Reticulum.transport_enabled",false]],"truncated_hash() (rns.identity static method)":[[8,"RNS.Identity.truncated_hash",false]],"truncated_hashlength (rns.identity attribute)":[[8,"RNS.Identity.TRUNCATED_HASHLENGTH",false]],"unpack() (rns.messagebase method)":[[8,"RNS.MessageBase.unpack",false]],"validate() (rns.identity method)":[[8,"RNS.Identity.validate",false]]},"objects":{"RNS":[[8,0,1,"","Buffer"],[8,0,1,"","Destination"],[8,0,1,"","Identity"],[8,0,1,"","Link"],[8,0,1,"","MessageBase"],[8,0,1,"","Packet"],[8,0,1,"","PacketReceipt"],[8,0,1,"","RawChannelReader"],[8,0,1,"","RawChannelWriter"],[8,0,1,"","RequestReceipt"],[8,0,1,"","Resource"],[8,0,1,"","Reticulum"],[8,0,1,"","Transport"]],"RNS.Buffer":[[8,1,1,"","create_bidirectional_buffer"],[8,1,1,"","create_reader"],[8,1,1,"","create_writer"]],"RNS.Channel":[[8,0,1,"","Channel"]],"RNS.Channel.Channel":[[8,1,1,"","add_message_handler"],[8,1,1,"","is_ready_to_send"],[8,2,1,"","mdu"],[8,1,1,"","register_message_type"],[8,1,1,"","remove_message_handler"],[8,1,1,"","send"]],"RNS.Destination":[[8,3,1,"","RATCHET_COUNT"],[8,3,1,"","RATCHET_INTERVAL"],[8,1,1,"","accepts_links"],[8,1,1,"","announce"],[8,1,1,"","app_and_aspects_from_name"],[8,1,1,"","clear_default_app_data"],[8,1,1,"","create_keys"],[8,1,1,"","decrypt"],[8,1,1,"","deregister_request_handler"],[8,1,1,"","enable_ratchets"],[8,1,1,"","encrypt"],[8,1,1,"","enforce_ratchets"],[8,1,1,"","expand_name"],[8,1,1,"","get_private_key"],[8,1,1,"","hash"],[8,1,1,"","hash_from_name_and_identity"],[8,1,1,"","load_private_key"],[8,1,1,"","register_request_handler"],[8,1,1,"","set_default_app_data"],[8,1,1,"","set_link_established_callback"],[8,1,1,"","set_packet_callback"],[8,1,1,"","set_proof_requested_callback"],[8,1,1,"","set_proof_strategy"],[8,1,1,"","set_ratchet_interval"],[8,1,1,"","set_retained_ratchets"],[8,1,1,"","sign"]],"RNS.Identity":[[8,3,1,"","CURVE"],[8,3,1,"","KEYSIZE"],[8,3,1,"","RATCHETSIZE"],[8,3,1,"","RATCHET_EXPIRY"],[8,3,1,"","TRUNCATED_HASHLENGTH"],[8,1,1,"","current_ratchet_id"],[8,1,1,"","decrypt"],[8,1,1,"","encrypt"],[8,1,1,"","from_bytes"],[8,1,1,"","from_file"],[8,1,1,"","full_hash"],[8,1,1,"","get_private_key"],[8,1,1,"","get_public_key"],[8,1,1,"","get_random_hash"],[8,1,1,"","load_private_key"],[8,1,1,"","load_public_key"],[8,1,1,"","recall"],[8,1,1,"","recall_app_data"],[8,1,1,"","sign"],[8,1,1,"","to_file"],[8,1,1,"","truncated_hash"],[8,1,1,"","validate"]],"RNS.Link":[[8,3,1,"","CURVE"],[8,3,1,"","ESTABLISHMENT_TIMEOUT_PER_HOP"],[8,3,1,"","KEEPALIVE"],[8,3,1,"","KEEPALIVE_TIMEOUT_FACTOR"],[8,3,1,"","STALE_GRACE"],[8,3,1,"","STALE_TIME"],[8,1,1,"","get_age"],[8,1,1,"","get_channel"],[8,1,1,"","get_establishment_rate"],[8,1,1,"","get_expected_rate"],[8,1,1,"","get_mdu"],[8,1,1,"","get_mode"],[8,1,1,"","get_mtu"],[8,1,1,"","get_q"],[8,1,1,"","get_remote_identity"],[8,1,1,"","get_rssi"],[8,1,1,"","get_snr"],[8,1,1,"","identify"],[8,1,1,"","inactive_for"],[8,1,1,"","no_data_for"],[8,1,1,"","no_inbound_for"],[8,1,1,"","no_outbound_for"],[8,1,1,"","request"],[8,1,1,"","set_link_closed_callback"],[8,1,1,"","set_packet_callback"],[8,1,1,"","set_remote_identified_callback"],[8,1,1,"","set_resource_callback"],[8,1,1,"","set_resource_concluded_callback"],[8,1,1,"","set_resource_started_callback"],[8,1,1,"","set_resource_strategy"],[8,1,1,"","teardown"],[8,1,1,"","track_phy_stats"]],"RNS.MessageBase":[[8,3,1,"","MSGTYPE"],[8,1,1,"","pack"],[8,1,1,"","unpack"]],"RNS.Packet":[[8,3,1,"","ENCRYPTED_MDU"],[8,3,1,"","PLAIN_MDU"],[8,1,1,"","get_q"],[8,1,1,"","get_rssi"],[8,1,1,"","get_snr"],[8,1,1,"","resend"],[8,1,1,"","send"]],"RNS.PacketReceipt":[[8,1,1,"","get_rtt"],[8,1,1,"","get_status"],[8,1,1,"","set_delivery_callback"],[8,1,1,"","set_timeout"],[8,1,1,"","set_timeout_callback"]],"RNS.RawChannelReader":[[8,1,1,"","__init__"],[8,1,1,"","add_ready_callback"],[8,1,1,"","remove_ready_callback"]],"RNS.RawChannelWriter":[[8,1,1,"","__init__"]],"RNS.RequestReceipt":[[8,1,1,"","concluded"],[8,1,1,"","get_progress"],[8,1,1,"","get_request_id"],[8,1,1,"","get_response"],[8,1,1,"","get_response_time"],[8,1,1,"","get_status"]],"RNS.Resource":[[8,1,1,"","advertise"],[8,1,1,"","cancel"],[8,1,1,"","get_data_size"],[8,1,1,"","get_hash"],[8,1,1,"","get_parts"],[8,1,1,"","get_progress"],[8,1,1,"","get_segments"],[8,1,1,"","get_transfer_size"],[8,1,1,"","is_compressed"]],"RNS.Reticulum":[[8,3,1,"","ANNOUNCE_CAP"],[8,3,1,"","LINK_MTU_DISCOVERY"],[8,3,1,"","MINIMUM_BITRATE"],[8,3,1,"","MTU"],[8,1,1,"","blackhole_sources"],[8,1,1,"","discovered_interfaces"],[8,1,1,"","get_instance"],[8,1,1,"","interface_discovery_sources"],[8,1,1,"","link_mtu_discovery"],[8,1,1,"","publish_blackhole_enabled"],[8,1,1,"","remote_management_enabled"],[8,1,1,"","required_discovery_value"],[8,1,1,"","should_use_implicit_proof"],[8,1,1,"","transport_enabled"]],"RNS.Transport":[[8,3,1,"","PATHFINDER_M"],[8,1,1,"","await_path"],[8,1,1,"","deregister_announce_handler"],[8,1,1,"","has_path"],[8,1,1,"","hops_to"],[8,1,1,"","next_hop"],[8,1,1,"","next_hop_interface"],[8,1,1,"","register_announce_handler"],[8,1,1,"","request_path"]]},"objnames":{"0":["py","class","Python class"],"1":["py","method","Python method"],"2":["py","property","Python property"],"3":["py","attribute","Python attribute"]},"objtypes":{"0":"py:class","1":"py:method","2":"py:property","3":"py:attribute"},"terms":{"":[0,2,5,7,11,12,13,14],"0":[0,2,5,8,11,12,13],"00":[11,12],"00000000":11,"00000100":11,"00000111":11,"01":11,"01010000":11,"02":2,"05":0,"0536":12,"06915":5,"08":[0,12],"0d7334d411d00120cbad24edf355fdd2":12,"0f4259fef4521ab75a3409e353fe9073eb10783b4912a6a9937c57bf44a62c1":12,"0x0101":0,"0x20":0,"0x7d":0,"0x7e":0,"0x91c421ddfb8a30a49a71d63447ddb54cebe3465":10,"0xf000":[0,8],"1":[0,2,5,8,11,12,14],"10":[5,11,12],"100":[0,5,11],"1000":0,"10000000":11,"1024":0,"109":14,"11":11,"115":11,"115200":[0,5,12],"1178a8f1fad405bf2ad153bf5036bdfd":12,"118":5,"12":[2,5,12],"1200":11,"125":5,"125000":5,"127":5,"128":[7,8,11],"13":12,"13425ec15b621c1d928589718000d814":[7,11],"14":5,"15":5,"150":[5,12],"150m":5,"153cb870b4665b8c1c348896292b0bad":12,"15kb":14,"15m":12,"16":[5,7,11,12,14],"1625":5,"1625000":5,"167":11,"168":14,"17":12,"1726dbad538775b5bf9b0ea25a4079c8":12,"18":12,"1800":8,"187":12,"192":14,"1b03013c25f1c2ca068a4f080b844a10":12,"1h":12,"2":[0,2,5,8,11,12],"20":[5,11,12],"200":[5,12],"201":5,"2016":[6,13],"2023":[2,12],"2026":[6,14],"21":2,"22":5,"2225fdeecaf6e2db4556c3c2d7637294":12,"23":12,"2316":12,"23h":12,"24":[5,12],"2400000000":5,"25":[0,4,13],"250":14,"255":[5,12],"25519":8,"256":[5,7,8,11,12,13],"2592000":8,"27":12,"29":5,"297":[11,13],"29716":5,"2b489d06eaf7c543808c76a5332a447d":12,"2b9ec651326d9bc274119054c70fb75":12,"2d03725b327348980d570f739a3a5708":12,"2d882c5586e548d79b5af27bca1776dc":12,"2f":0,"2owjajquafianpecac":2,"3":[0,2,5,9,11,12,13],"30":[5,8,12],"30602def3b3506a28ed33db6f60cc6c9":12,"32":[2,8,11],"3278":5,"327c1b2f87c9353e01769b01090b18f2":14,"32m":12,"33":5,"34":[5,14],"360":[5,8,12],"3600":[0,2,5],"37428":12,"37429":12,"38":12,"383":8,"3865":12,"399ea050ce0eed1816c300bcb0840938":12,"3a4f8b9c1d2e3f4g5h6i7j8k9l0m1n2o":12,"3b87":5,"4":[8,11,12],"40m":12,"4242":[2,5],"4251":5,"42671":5,"430":11,"4343":5,"44":13,"44318":5,"45":[0,11],"46":12,"464":8,"465":11,"469":12,"48555":5,"49":12,"49555":5,"4965":12,"4e":5,"4faf1b2e0a077e6a9d92fa051f256038":11,"4g":14,"4ghz":5,"5":[0,5,8,11,12,13,14],"500":[5,8,11,13,14],"5001":5,"50824b711717f97c2fb1166ceddd5ea9":12,"51":[5,11],"512":[5,8,11,13],"52":12,"521c87a83afb8f29e4455e77930b973b":12,"5245a8efe1788c6a1cd36144a270e13b":12,"55":5,"56":12,"564":0,"56m":12,"5757":5,"5858":5,"59":12,"5caf":5,"5d78":5,"5urvjicpzi7q3ybztsef4i5ow2aq4soktfj7zedz53s47r54jnqq":5,"6":[5,8,12],"60":[0,5],"600":5,"63":12,"64":[2,11,12],"68a4aa91ac350c4087564e8a69f84e86":12,"7":[2,5,11,12],"71":14,"71e5":5,"72":5,"720":[5,8],"7200":5,"73":[5,12],"73cbd378bb0286ed11a707c13447bb1":12,"74":12,"74195":5,"781":12,"7822":12,"7a55144adf826958a9529a3bcf08b149":12,"8":[0,5,12],"80":[10,12],"8001":5,"809":12,"83":[11,12],"83b7328926fed0d2e6a10a7671f9e237":14,"84fpy1qbxhcgdseepynmhthcrgmx4nffbytz2gkytoqhvvhjp8eaw1z1eedrnkd19b3b8nilcgvxzkv17ummmeescrpya5w":10,"86":12,"865":5,"865600000":5,"867":5,"867200000":5,"868":11,"88":5,"89":5,"8dd57a738226809646089335a6b03695":12,"9":[2,8,12],"90":12,"900":[11,12],"9037":12,"921600":12,"941bed5e228775e5a8079fc38b1ccf3f":12,"959e10e5efc1bd9d97a4083babe51dea":12,"96":11,"9600":0,"9710b86ba12c42d1d8f30f74fe509286":12,"984b74a3f768bef236af4371e6f248cd":12,"99":11,"99714":5,"9fb6d773498fb3feda407ed8ef2c3229":12,"9h":12,"A":[0,2,4,5,6,7,8,9,11,12],"AND":6,"AS":6,"And":[0,14],"As":[2,3,5,8,9,10,11,12,13],"At":[2,11],"BE":6,"BUT":6,"Be":[8,12,14],"But":[10,11,14],"By":[0,2,5,8,11,12,14],"FOR":6,"For":[2,4,5,7,8,11,12,13],"IN":[0,6,8],"If":[0,2,3,5,7,8,9,10,11,12,13,14],"In":[0,2,3,4,5,7,8,9,11,12,13],"It":[0,2,3,5,7,8,9,11,12,13,14],"NO":6,"NOT":6,"No":[0,2,5,7,11,12,13,14],"Not":4,"OF":6,"OR":6,"Of":[7,11],"On":[0,2,5,7,12,14],"One":[2,3,8,11,14],"Or":[4,5,12,13],"THE":6,"TO":6,"That":[9,11,14],"The":[0,2,3,4,5,6,7,8,9,10,13],"Then":[0,2],"There":[2,7,11,12,14],"These":[2,5,7,8,9,11,12],"To":[0,2,3,4,5,7,11,12,13],"WITH":6,"Will":8,"With":[4,5,7,9,11,12,14],"_":11,"__":11,"______":11,"_______":11,"________":11,"________________":11,"__future__":0,"__init__":[0,8],"__main__":0,"__name__":0,"__str__":0,"_no_us":8,"a4d":5,"a79f":5,"aarch64":2,"ab":0,"abil":[2,3,4,6,12,13],"abl":[0,2,5,8,11,12],"abolish":14,"abort":[0,5],"about":[0,2,3,5,7,8,11,12,14],"abov":[2,3,5,6,11,12],"absolut":[5,10,13,14],"abstract":[7,8,11,14],"abstractmethod":8,"abund":[3,14],"abus":12,"accept":[5,8,10,11,12,14],"accept_al":[0,8],"accept_app":8,"accept_non":8,"accepts_link":8,"access":[2,4,5,7,8,12,14],"access_point":[5,7],"accid":[9,14],"accommod":[8,11],"accomod":14,"accord":[0,2,7,11],"accordingli":[0,5],"account":[7,14],"achiev":[2,5,7,8,11,13],"acknowledg":[7,13],"across":[0,3,7,8,11,12,14],"act":[2,5,8,11,12,14],"action":[0,6,12],"activ":[0,2,5,8,9,11,12],"actor":[11,12,14],"actual":[0,2,5,7,11,12,14],"ad":[0,3,4,5,7,8,9,11,12,13,14],"adapt":[2,3,14],"add":[0,2,5,7,8,12],"add_argu":0,"add_message_handl":[0,8],"add_ready_callback":8,"addict":14,"addit":[3,5,7,8,9,11,12,13],"addition":[2,3,5,11],"addr":12,"address":[0,2,4,5,8,11,12,13],"adher":8,"adjust":[2,8,12,14],"admin":5,"administr":[7,9,11,12,14],"adopt":11,"adress":[8,11],"advanc":[9,11],"advantag":8,"advers":13,"adversari":[2,7,10,14],"advertis":[0,5,8],"advic":10,"advis":[5,11],"ae":[8,11,13],"af73":5,"affect":[2,5,14],"affili":9,"afford":7,"after":[0,2,5,7,8,11,12],"afterthought":14,"again":[5,11,12],"against":[2,5,11,14],"agenc":[4,11],"agent":[11,14],"agnost":[7,11],"agnostic":[11,14],"ago":12,"agreement":14,"ahead":7,"ai":14,"aim":[2,4,11],"air":[2,3],"airmax":3,"airtim":[5,7,14],"airtime_limit_long":5,"airtime_limit_short":5,"akin":11,"algorithm":[6,7,14],"alic":11,"alien":14,"align":[2,12,14],"aliv":[8,11],"all":[0,2,3,4,5,6,7,8,9,10,11,12,13,14],"allevi":3,"alloc":[5,7,8,11,12],"allow":[0,2,3,5,7,8,9,11,12,13,14],"allow_al":[0,8],"allow_list":8,"allow_non":8,"allowed_hash":12,"allowed_ident":12,"allowed_list":8,"almost":[3,5,11,12,14],"alon":5,"along":[5,8,11,12],"alongsid":7,"alreadi":[0,2,3,7,8,9,11,12,14],"also":[0,2,3,4,5,7,8,9,11,12,13,14],"alter":[2,8,11],"altern":[0,2,5,12],"although":[2,11,13],"alwai":[2,5,7,8,11,12,14],"am":14,"amateur":[5,13],"among":14,"amongst":6,"amount":[0,5,7,8,11,13,14],"amsterdam":[5,12],"an":[0,2,3,5,6,7,8,9,11,12,13,14],"analog":[9,14],"analyt":10,"anchor":4,"android":[4,5,9,12],"ani":[0,2,3,5,6,7,8,9,10,11,12,13],"annot":0,"annouce_cap":5,"announc":[2,4,7,8,9,12],"announce_cap":[5,8],"announce_handl":0,"announce_interv":[5,12],"announce_packet_hash":8,"announce_rate_grac":[2,5],"announce_rate_penalti":[2,5],"announce_rate_target":[2,5],"announced_ident":[0,8],"announceloop":0,"announcesampl":0,"anonym":[2,7,8,11,13],"anoth":[7,8,11,12,14],"answer":[11,12,14],"antenna":[3,14],"anxieti":14,"anymor":[2,14],"anyon":[0,2,3,5,7,8,9,11,12,14],"anyth":[3,5,9,11,12,13,14],"anywher":[0,5,14],"ap":5,"api":[2,4,11,13,14],"apk":2,"app":[0,2,8,9,11,14],"app_and_aspects_from_nam":8,"app_data":[0,8],"app_nam":[0,8],"app_timeout":0,"appear":14,"append":[0,11,12],"appli":[5,8,11,12,14],"applic":[0,5,7,8,9,11,12,13,14],"appreci":12,"approach":[2,3,7,11,12],"appropri":[5,7,14],"approv":[7,11,14],"approxim":[5,12],"april":2,"apt":2,"ar":[0,2,3,5,7,8,9,10,11,12,13,14],"arbit":14,"arbitrari":[8,11,12,13],"arch":[2,14],"architect":[10,14],"architectur":[2,4,9],"archiv":9,"area":[2,3,5,7,11,13],"arg":[0,12],"argon":0,"argpars":0,"argument":[0,8,12],"argumentpars":0,"aris":6,"arm64":4,"armi":14,"armor":14,"around":[2,5,11,14],"arrai":2,"arriv":[0,11,14],"art":14,"artifici":6,"arx":12,"ask":[0,2,3,8,9,14],"aspect":[0,2,3,5,7,8,11,12],"aspect_filt":[0,8],"assert":14,"assign":[0,7,11,12,14],"assist":9,"associ":[6,8,11,12],"assum":[5,7,11,14],"assumpt":[7,10,14],"assuredli":14,"asymmetr":[11,12,13],"asynchron":[7,14],"attach":[9,12],"attached_interfac":8,"attack":2,"attain":2,"attempt":[0,2,3,8,12],"attent":[10,14],"attribut":8,"atx":12,"auth":12,"authent":[5,7,8,9,11,12,13],"author":[6,11,12,14],"authoris":12,"authorit":[11,13],"auto":[2,3,4,8,11,12],"auto_compress":8,"autoconfigur":13,"autoconnect_discovered_interfac":[5,12],"autodiscov":5,"autoinstal":[3,12],"autointerfac":[2,3,5,12],"autom":[2,3,4,9,10,11],"automat":[0,2,5,7,8,9,11,12,13,14],"autonom":[7,11,14],"autonomi":[13,14],"avail":[0,2,3,4,5,7,8,9,11,12,13,14],"averag":11,"avoid":[3,11,12],"awai":[0,5,11,12,14],"await_path":8,"awar":[2,5,11],"ax":[4,13],"ax25kissinterfac":5,"b":[0,12],"b32":5,"back":[0,5,11,13,14],"backbon":[3,4,7,12,14],"backboneinterfac":[2,5,12],"backend":[5,11],"background":[2,5,12],"backhaul":[3,7],"backup":12,"balanc":5,"band":[3,11,14],"bandwidth":[2,4,5,7,8,9,11,12,13],"bar":14,"bare":[0,5,12,14],"barrier":[5,11,14],"base":[4,5,7,8,9,11,12,13,14],"base32":[5,12],"base64":12,"bash":[5,12],"basi":[5,8,11,12,13],"basic":[0,2,4,5,7,8,12],"batch":12,"batteri":14,"baud":[5,12],"baud_flash":12,"baudrat":0,"bc1pgqgu8h8xvj4jtafslq396v7ju7hkgymyrzyqft4llfslz5vp99psqfk3a6":10,"bc7291552be7a58f361522990465165c":[12,13],"beacon":5,"beast":14,"beat":14,"beauti":9,"becaus":[7,11,14],"becki":0,"becom":[0,2,5,7,8,11,14],"been":[0,2,3,5,7,8,9,10,11,12,13,14],"befor":[0,2,5,7,8,10,11,12,14],"beg":14,"begin":[0,3,8,14],"begun":8,"behalf":[5,7],"behav":[3,9],"behavior":14,"behaviour":[2,5,12],"behind":[2,5,10,11,14],"being":[2,5,8,11,14],"beings":[6,11],"belief":11,"believ":14,"belong":[7,11,12,14],"below":[3,5,12],"bend":14,"benefici":[5,12],"berlin":14,"best":[2,7,11,14],"better":[2,5,7,10,11,14],"between":[0,5,7,8,9,11,12,14],"bi":[8,11],"bidirect":11,"big":14,"bill":14,"billion":[7,11],"billionair":14,"bin":[2,5,12],"binari":[0,2,5,7,8,11,12,14],"bind":5,"bit":[0,2,5,7,8,9,11,12,13,14],"bitcoin":10,"bitrat":[0,5,8],"blackhol":[2,4,7,8,11],"blackhole_sourc":[8,12],"blackholed_ident":12,"blackholeupdat":12,"ble":5,"blindli":[12,14],"blob":[0,11,12],"block":[2,5,7,8,9,11,12,14],"blockchain":14,"blocklist":12,"blood":14,"blueprint":14,"bluetooth":12,"board":[2,4,5,9,11,13],"boat":14,"bogu":5,"boil":3,"bond":14,"book":14,"bookworm":4,"bool":8,"boot":[2,12],"bootstrap":[4,5,12],"bootstrap_onli":[2,5],"borrow":14,"bot":9,"both":[0,2,3,5,7,8,9,11,12,13],"bounc":[2,14],"bound":[7,14],"boundari":[5,7,11],"box":3,"branch":12,"breadcrumb":12,"break":[2,8,11,14],"breath":[2,14],"breviti":12,"bridg":[3,5],"briefli":[3,11],"bring":[5,12],"brittl":[2,14],"broad":[2,3],"broadcast":[2,4,5,7,8,11,12,14],"broadcast_destin":0,"broadcastloop":0,"broader":[2,11],"broken":[2,14],"brought":[5,12],"brows":[9,12,14],"browser":[9,12,14],"buffer":[4,5,8,13],"bufferedread":8,"bufferedrwpair":8,"bufferedwrit":8,"bufferexampl":0,"bug":[9,10],"bui":14,"build":[0,3,4,5,9,11,13,14],"builder":14,"built":[2,5,7,9,11,12,13,14],"bulletin":9,"bundl":0,"bureaucraci":14,"bureaucrat":[13,14],"burst":5,"button":14,"bw":12,"bypass":[10,14],"byte":[0,4,7,8,11,12,13],"bytes":0,"c":[0,6,12],"c50cc4e4f7838b6c31f60ab9032cbc62":12,"c89b4da064bf66d280f0e4d8abfd9806":12,"cabl":[5,14],"cach":[5,7,12],"cafe":14,"cage":14,"calcul":[7,8,11,12],"call":[0,7,8,9,11,13,14],"callabl":[0,8],"callback":[0,8],"callsign":5,"can":[0,2,3,4,5,7,8,9,10,11,12,14],"cancel":8,"candid":7,"cannot":[0,2,5,7,13,14],"cap":5,"capabl":[0,2,5,7,11],"capac":[2,3,5,7,8,11],"capit":14,"captur":14,"car":7,"carambola":0,"card":14,"care":[2,7,8,12,13,14],"carefulli":2,"cargo_build_target":2,"carri":[5,7,8,11,12,13,14],"carrier":[4,7,13],"case":[0,2,3,5,7,11,12],"castl":14,"cat":12,"categori":3,"caus":[2,5],"caution":5,"cb":[8,11],"cbc":[11,13],"cdma":5,"ceas":14,"cell":7,"cellular":14,"cement":14,"censor":[11,12,14],"censorship":[11,13],"center":4,"central":[2,3,5,7,9,11,12,14],"centralis":11,"ceo":14,"certain":[0,5,7,10,11,12,14],"certif":14,"chain":[5,14],"challeng":[2,9,11,14],"chanc":3,"chang":[0,2,5,8,11,12,13,14],"channel":[2,4,5,7,8,10,11,13,14],"channelarg":0,"channelexampl":0,"chaotic":14,"chapter":[2,3,5,7,8,9,11,12,13],"charact":[0,5,12],"characterist":[5,7,11,14],"charg":6,"chart":12,"charter":11,"chase":14,"chat":4,"cheap":[3,5,11],"cheapli":2,"check":[0,2,8,11,12,14],"checksum":[8,13],"choic":[2,7,14],"choke":14,"choos":[0,2,5,9,11,14],"chose":11,"chosen":11,"chunk":0,"cific":5,"ciphertext":8,"ciphertext_token":8,"circl":14,"circumst":[10,11,14],"citi":14,"cl":0,"claim":[6,11],"clariti":14,"class":[0,7,8,13],"clear":[0,5,8,12,14],"clear_default_app_data":8,"clear_screen":0,"clearli":14,"click":12,"client":[0,3,4,8,12,14],"client_buffer_readi":0,"client_config":12,"client_connect":0,"client_disconnect":0,"client_ident":0,"client_loop":0,"client_message_receiv":0,"client_packet_receiv":0,"client_request":0,"climat":14,"clone":[11,12],"close":[0,7,8,12],"closed_callback":8,"closer":[9,11],"closest":11,"cloth":14,"cloud":[4,5,9],"cluster":11,"co":[3,5,13],"code":[2,3,4,5,7,9,10,12,13,14],"codingr":5,"coexist":7,"coffe":14,"coher":14,"collabor":11,"collaps":[2,14],"collect":[2,10],"collis":7,"colon":14,"color":12,"columba":4,"com":[0,10,14],"combin":[2,4,9,11,12,14],"combinatori":14,"come":[2,5,7,11,14],"comma":[5,12],"command":[0,2,5,9,12],"commend":14,"comment":[5,12],"commerci":14,"commit":[2,9,12],"committe":14,"common":[0,2,3,4,7,11,12,13,14],"commonli":[3,5],"commun":[0,2,4,5,7,8,9,10,11,12,13,14],"communica":5,"compani":14,"compar":[7,14],"compass":14,"compat":[0,2,3,5,8,9,11,12,13],"compet":14,"compil":2,"complain":14,"complet":[0,2,3,5,7,8,9,11,12,13],"complex":[2,5,10,11,14],"compli":7,"compon":[3,10,11,14],"compos":11,"comprehens":[9,10],"compress":[0,8,11,12,13],"compromis":[11,14],"comput":[2,5,11,13,14],"computation":[5,12],"concaten":[8,12],"conceiv":[2,3],"concept":[4,11,12,14],"conceptu":4,"concern":14,"concert":11,"conclud":[0,8],"concret":14,"concurr":[3,11,12],"condit":[2,6,11,13,14],"conduit":14,"conf":[2,9],"config":[0,2,5,7,12,14],"configarg":0,"configdir":8,"configpath":0,"configur":[0,2,3,4,7,8,11,13],"configuraion":3,"configure_devic":0,"confirm":[7,11,13,14],"conflict":[2,7],"confront":14,"confus":[3,11],"congest":11,"conglomer":14,"conjunct":5,"connect":[0,3,4,6,8,10,11,12,13,14],"conscienc":14,"conscript":14,"consequ":[7,11],"conserv":5,"consid":[0,2,5,8,9,11,12,13,14],"consider":[4,11],"consist":[11,12],"consol":12,"constant":[8,14],"constantli":[11,14],"constitut":[2,11],"constrain":[7,8],"constraint":14,"construct":[11,13,14],"constructor":0,"consum":[7,8,14],"consumpt":[7,14],"contact":[7,9,11,14],"contain":[0,5,7,8,11,12],"contempl":14,"contend":11,"content":[0,2,7,9,12],"context":[2,11,12,14],"contin":[0,2,14],"continu":[5,8,10,12,13,14],"contract":6,"contrari":14,"contribut":[4,6,7,10],"control":[0,2,3,4,7,8,9,11,12,13,14],"convei":[0,14],"conveni":[0,12,14],"convent":[0,7],"converg":[2,7,11,14],"convers":[9,11,12,14],"convert":12,"cook":2,"coordin":[5,7,8,11,13,14],"copi":[6,12],"copyright":6,"core":[7,11,12,13,14],"corner":14,"corpor":14,"correct":[0,5,7,11],"correctli":[0,7],"correspond":[7,11,14],"cost":[3,4,5,11,13],"could":[0,2,5,7,8,11,12,13,14],"count":[9,11,12,14],"counter":0,"cours":[2,5,7,9,11,14],"coven":14,"cover":[2,3,7,11,13],"coverag":7,"cpu":[0,5,7,11],"cpuinfo":12,"cr":12,"craft":14,"craftsman":14,"crash":14,"creat":[0,4,5,7,8,9,12,13,14],"create_bidirectional_buff":[0,8],"create_kei":8,"create_read":8,"create_receipt":[0,8],"create_writ":8,"creation":[6,7,9,11,12,13],"creativ":14,"creator":[11,14],"credenti":[5,11],"critic":[7,11,12],"cross":[5,9],"crowd":14,"crucial":7,"cruft":14,"cryptograph":[2,4,5,7,12,13,14],"cryptographi":[2,11,13],"crystal":14,"ctrl":0,"cull":8,"culmin":14,"curl":5,"current":[0,2,4,5,8,9,12,14],"current_download":0,"current_filenam":0,"current_ratchet_id":8,"curv":[7,8,11,13],"curve25519":[7,8,11,13],"custodian":14,"custom":[3,4,8,9,11,12,13],"custom_network_nam":5,"customis":5,"cut":14,"cynic":14,"d":12,"d56a4fa02c0a77b3575935aedd90bdb2":12,"daemon":[0,2,5,8,9,12],"dai":[8,9,12,14],"daili":12,"damag":[6,14],"danc":14,"danger":14,"dark":14,"data":[0,2,3,4,5,7,8,11,13,14],"data_buff":0,"data_port":5,"databas":[9,12,14],"databit":[0,5,12],"datacent":2,"datar":5,"dataset":[6,14],"date":[0,2,12],"datetim":0,"db":[0,12],"dbm":[0,5,12],"deal":[5,6],"death":4,"debian":[4,11,12],"debug":[2,12],"decad":[3,10,14],"decentr":[2,4,5,12],"decentralis":13,"decid":[5,7,8,11,14],"decim":5,"decis":[5,7,11,14],"declar":11,"decod":[0,5,12],"decreas":12,"decrypt":[5,7,8,11,12],"dedic":[5,11,13,14],"deep":[2,14],"deepli":14,"def":[0,12],"default":[0,2,3,5,7,8,9,11,12],"default_ifac_s":0,"defin":[0,5,8,11,12,13,14],"definit":[0,2,11,12,14],"defunct":12,"degrad":7,"degre":5,"delai":[5,9,11,12,14],"deleg":11,"delet":14,"delimit":0,"deliv":[0,2,7,8,9,14],"deliveri":[0,7,8,9,13],"demand":[8,14],"demonstr":[0,2,5,14],"deni":14,"depend":[0,3,4,5,7,8,11,12,14],"deploi":[11,14],"depriorit":14,"depth":14,"deregist":8,"deregister_announce_handl":8,"deregister_request_handl":8,"deriv":[2,7,8,11,13],"describ":[3,5,8,11],"descript":[0,12],"descriptor":0,"deseri":0,"deserializ":0,"design":[2,3,4,5,7,9,10,11,12,13],"desir":[0,3,5,11],"desk":14,"desktop":[5,9],"dest_len":0,"destin":[0,2,4,8,12,14],"destination_1":0,"destination_2":0,"destination_clos":0,"destination_hash":[0,8,12],"destination_hexhash":0,"destroi":14,"destruct":14,"detach":5,"detail":[0,2,4,5,8,12,13],"detect":0,"determin":[2,7,8,11,14],"detriment":12,"dev":[0,2,5,12],"devel":2,"develop":[3,4,6,8,9,10,11,13,14],"devic":[0,2,4,5,7,8,9,11,12,14],"dh":8,"dhcp":[3,5,7,12],"di":14,"dict":0,"dictat":[12,14],"dictatorship":14,"dictionari":12,"did":[0,9,14],"diff":12,"differ":[0,2,3,5,7,8,9,11,12,13,14],"differenti":12,"diffi":[7,11],"difficult":[2,3,12],"difficulti":[5,12],"digit":[2,3,11,13,14],"digniti":14,"dinner":14,"dir":0,"dire":3,"direct":[0,2,3,7,8,9,11,12],"direction":11,"directli":[2,3,5,6,7,8,9,11,12,13,14],"directori":[0,2,5,7,12,14],"disabl":[5,11,12],"disappear":[5,12,14],"disassoci":11,"discard":[2,8,11],"disciplin":14,"disconnect":[0,2,4,5],"discov":[2,4,5,7,8,9,11,14],"discover":[2,4,12],"discover_interfac":12,"discovered_interfac":8,"discoveri":[2,4,8,11,12],"discovery_bandwidth":5,"discovery_encrypt":5,"discovery_frequ":5,"discovery_modul":5,"discovery_nam":5,"discovery_port":5,"discovery_scop":5,"discovery_stamp_valu":5,"discrimin":7,"discuss":[3,11],"disk":[0,8,12],"displai":[0,5,7,9,11,12],"disrupt":5,"dissolv":[7,14],"distanc":[3,11,12],"distant":[2,8,11],"distinct":[5,7,11,14],"distinguish":[7,11],"distribut":[0,4,6,7,8,9,11,12,13,14],"dive":2,"divid":8,"divmod":0,"dn":[3,5,9,14],"dna":14,"dnf":2,"do":[0,2,3,5,6,7,8,11,12,14],"document":[2,6,8,9,11,12,13,14],"doe":[0,2,3,4,5,8,9,11,12,14],"doesn":[5,7,14],"dollar":14,"domain":[2,4,5,11,12,13],"domin":14,"don":[0,2,7,8,11,12,14],"donat":4,"done":[0,2,5,11,12,14],"door":14,"dot":[11,12],"doubt":2,"dowload":2,"down":[0,3,5,8,12,14],"download":[0,2,5,7,9,12],"download_began":0,"download_conclud":0,"download_finish":0,"download_start":0,"download_tim":0,"downstream":12,"drag":9,"drastic":12,"draw":14,"drawn":14,"drive":10,"driver":[12,13],"droid":2,"drone":14,"drop":[5,7,8,9,11,12,14],"dsrdtr":0,"dual":[3,12],"dublin":12,"due":0,"dumb":14,"dump":12,"duplex":[11,13],"durat":12,"dure":12,"dynam":[2,5,9,12,14],"dysfunct":10,"e":[0,12],"e5c032d3ec4e64a6aca9927ba8ab73336780f6d71790":12,"e702c42ba8":12,"e7536ee90bd4a440e130490b87a25124":12,"each":[0,2,5,7,8,9,11,12],"earli":[9,14],"earlier":11,"eas":[5,11],"easi":[2,3,5,9,11,12,13],"easier":[2,5,7,12,13],"easiest":[2,3,5,11],"easili":[2,5,7,11,12,13,14],"eastern":11,"ecdh":[11,13],"echo":4,"echo_destin":0,"echo_request":0,"economi":14,"ecosystem":[2,5,9,11,12,14],"ed25519":[11,13],"edit":[2,12],"editor":12,"eeprom":12,"effect":[5,11,12],"effici":[0,2,5,7,8,9,11,12,13,14],"effort":[3,14],"effortlessli":9,"eg":12,"ei":0,"either":[2,3,7,8,11,12,14],"elaps":5,"electromagnet":14,"eleg":14,"element":[7,14],"elif":0,"elimin":[7,14],"ellipt":[7,8,11,13],"els":[0,7,9,10,11,13,14],"email":9,"embed":3,"embrac":14,"emerg":[4,9],"emiss":9,"emploi":[3,11],"empow":13,"empti":[0,14],"emul":[2,12],"enabl":[0,2,3,4,7,8,9,11,12,13,14],"enable_ratchet":8,"enable_remote_manag":12,"enable_transport":[5,11,12],"encapsul":[5,13],"encod":[0,8,9,12,14],"encount":[2,7],"encourag":[2,14],"encrypt":[0,2,4,5,7,8,9,11,12,13],"encrypted_mdu":8,"end":[0,5,7,8,9,11,13],"endless":[5,14],"endpoint":[0,7,8,9,11,14],"energi":[2,14],"enforc":[5,8,11,12],"enforce_ratchet":8,"engag":14,"engin":[2,9,10,14],"enhanc":11,"enough":[2,3,5,9,11],"ensur":[0,2,5,7,8,9,11,12,13,14],"ensurepath":2,"enter":[0,12],"entir":[0,2,7,8,9,11,12,13,14],"entiti":[7,11,12,14],"entri":[0,2,11,12,14],"entropi":14,"entrypoint":[4,5,12],"enumer":0,"envelop":[8,14],"environ":[2,4,5,7,10,11,12],"environment":11,"environmentlogg":11,"eof":5,"ephemer":[7,8,11,13],"epub":4,"equal":[7,8,11,14],"equip":[5,7,11],"equival":[5,14],"era":14,"erod":14,"erron":10,"error":[0,2,5,10,12,14],"esc":0,"esc_mask":0,"escap":[0,12],"esp32":3,"especi":[2,3,5,12],"essenti":[2,5,9,11,12,14],"establish":[0,2,5,7,8,9,12,13,14],"established_callback":8,"establishment_timeout_per_hop":8,"etc":12,"eth0":5,"eth1":5,"ether":14,"ethereum":10,"ethernet":[2,4,5,7,9,11,13,14],"ethic":4,"evapor":14,"even":[0,2,5,7,8,9,11,12,13,14],"event":[5,6,14],"eventu":8,"ever":11,"everi":[0,2,5,7,8,11,12,14],"everydai":2,"everyon":[2,9,10,11,14],"everyth":[0,7,9,10,11,14],"evict":14,"evolv":[2,7,11],"exact":[3,5,11],"exactli":[8,11,14],"exampl":[2,3,4,7,8,11,12,13],"example_util":0,"exampleannouncehandl":0,"exampleconfig":[2,12],"exampleinterfac":0,"exce":[0,5,8],"except":[0,5,8],"excess":[5,12],"exchang":[7,8,11,13],"exclud":[8,11,12],"execstart":12,"execstartpr":12,"execut":[0,2,5,8,12],"exhaust":[3,9,11,12],"exist":[0,2,3,4,5,7,9,11,12,13],"exit":[0,5,8,12],"expand":[7,9,11,13],"expand_nam":8,"expans":14,"expect":[0,5,8,10,11,12],"expens":[3,5],"experi":[7,9,11,12,14],"experienc":0,"expir":5,"expiri":[5,8],"explain":[3,8],"explan":[11,12],"explicit":8,"explicitli":[5,7,11,12],"explor":[0,9,11,13,14],"export":[2,12],"expos":[5,8,12],"exposur":5,"express":[6,12],"extend":[0,8],"extens":[5,9,12,13],"extern":[0,2,5,8,12,13,14],"extra":[2,5,12],"extract":[12,14],"extrem":[2,9,11,12,13,14],"f":[0,2,12],"f4":5,"f53a1c4278e0726bb73fcc623d6ce763":12,"fabric":[4,7],"face":[5,9],"facilit":[9,11],"fact":[2,5,13],"factor":[5,8,12],"fade":14,"fail":[0,2,5,8,14],"failed_callback":[0,8],"failur":[2,5,8,14],"fake":12,"fallaci":4,"fallback":14,"fallen":14,"fals":[0,5,7,8],"famili":2,"familiar":9,"fantasi":14,"far":[2,7,11],"fashion":10,"fast":[4,5,7,8,9,11],"faster":[2,5,11,14],"fastest":[5,11],"fat":14,"favor":2,"favorit":9,"fe80":2,"featur":[2,4,5,7,8,9,10,11,12,13],"feder":[9,11,12,14],"fedora":2,"feed":[2,8,14],"feedback":[0,4],"feel":[9,14],"fernet":11,"fetch":[5,12],"few":[2,3,5,7,9,11,12,13,14],"fewer":8,"ff":12,"fi":10,"fiber":[3,14],"fibr":13,"field":[11,14],"file":[0,2,3,5,6,7,8,9,11,12,13],"file_resourc":0,"file_s":0,"filelist":0,"filelist_data":0,"filelist_receiv":0,"filelist_timeout_job":0,"filenam":0,"filesync":4,"filetransf":[4,8],"filter":[0,7,11,12],"final":[0,8,11,14],"find":[4,5,9,11,12,14],"find_spec":0,"fine":5,"fingerprint":14,"finish":4,"finit":14,"fire":14,"firewal":[2,5,7,14],"firmwar":[2,3,11,12],"firmware_hash":12,"first":[0,2,5,7,8,11,12,14],"fit":[0,6,14],"five":[0,14],"fix":[4,11,14],"fixed_mtu":5,"flag":[0,2,8,11,12],"flash":12,"flasher":2,"flat":14,"flaw":14,"fleet":11,"flesh":14,"flexibl":[2,3,5,7,9,12,13],"fli":11,"flicker":14,"flight":8,"flip":14,"float":[0,8],"flood":[5,12],"flow":[0,2,4,5,7,11],"flow_control":5,"fluid":14,"fluiditi":14,"fluidli":14,"flush":0,"focu":12,"focus":[9,11],"folder":0,"follow":[0,2,3,5,6,8,10,11,12,13,14],"font":12,"forbid":14,"forc":[0,12,14],"forcibli":[8,12],"foreground":2,"forev":14,"forg":14,"forget":[7,12],"fork":9,"form":[2,5,7,8,11,12,14],"format":[0,4,9,12,13],"forth":0,"fortun":14,"forward":[4,5,7,8,9,11,12,13],"forward_ip":5,"forward_port":5,"found":[0,2,5,8,11,12,14],"foundat":[7,10,11,13,14],"fragil":14,"frame":[0,5],"framework":9,"free":[2,6,7,9,10,13,14],"freedom":[11,14],"freedv":3,"freeli":11,"freq":12,"frequenc":[2,3,5,11,12],"frequent":[5,7],"friend":[2,14],"friendli":9,"from":[0,2,3,4,5,6,7,8,9,10,11,12,13],"from_byt":8,"from_fil":8,"from_identity_hash":8,"fromhex":0,"front":[11,12],"frontend":9,"fruit":0,"ftdi_ft230x_basic_uart_43891ckm":12,"fuel":14,"full":[0,2,5,7,8,9,11,12,13],"full_hash":8,"full_nam":[8,12],"fulli":[0,2,3,5,9,11,12,13],"funcion":8,"function":[0,2,3,4,5,6,7,8,9,10,12,13,14],"fundament":[3,7,11,12,14],"furnish":6,"further":[2,4,5,12,14],"futur":[4,7,8,9,12,14],"fw":12,"g":[0,11,12],"ga":0,"gain":[3,8,11,14],"galact":11,"gap":2,"gaslit":14,"gatekeep":[11,14],"gatewai":[0,2,5,7,11,12,14],"gbp":12,"gear":14,"gen_tim":12,"gener":[0,2,3,5,7,8,11,12,13,14],"generalis":13,"genuin":12,"geograph":[2,5],"get":[0,3,4,5,7,8,9,12,14],"get_ag":8,"get_channel":[0,8],"get_config_obj":0,"get_data_s":8,"get_establishment_r":8,"get_expected_r":8,"get_external_ip":5,"get_hash":8,"get_inst":8,"get_mdu":8,"get_mod":8,"get_mtu":8,"get_packet_rssi":0,"get_packet_snr":0,"get_part":8,"get_private_kei":8,"get_progress":[0,8],"get_public_kei":8,"get_q":8,"get_random_hash":[0,8],"get_remote_ident":[0,8],"get_request_id":8,"get_respons":8,"get_response_tim":8,"get_rssi":8,"get_rtt":[0,8],"get_seg":8,"get_snr":8,"get_statu":8,"get_transfer_s":8,"geti2p":5,"ghost":14,"ghz":11,"gi":0,"giant":14,"gift":14,"gigabit":[7,14],"gigabyt":13,"git":12,"github":[0,2],"give":[2,5,11,12,14],"given":[5,7,8,11,12,14],"global":[0,4,5,7,8,11,12,13],"globe":14,"glue":3,"go":[0,5,7,11,14],"goal":[2,4,5,7,9,13],"goe":14,"good":[2,3,7,11,12],"goodwil":14,"got":[0,14],"got_respons":0,"govern":[11,14],"gpio":9,"grace":8,"gracefulli":[5,7],"grade":4,"grant":[6,12,14],"grape":0,"graphic":9,"gratefulli":10,"graviti":14,"great":[2,11,12,14],"greater":[8,11,12,13],"greatli":[2,5],"green":14,"grid":[9,14],"gross":14,"ground":14,"group":[5,8,9,11,12],"group_id":5,"group_nam":12,"groupinstal":2,"grow":[2,14],"grown":14,"growth":2,"guarante":[7,10,11],"guard":14,"guess":5,"gui":9,"guid":[2,3,9,11],"guidelin":2,"guilt":9,"gun":14,"gw":5,"h":12,"ha":[0,3,5,7,8,9,10,11,12,13,14],"habit":14,"habitat":14,"hack":13,"had":11,"half":[11,13],"hammer":14,"hand":[0,14],"handheld":11,"handl":[0,2,3,5,7,8,9,11,12,13],"handler":[0,8,12,14],"handshak":14,"happen":[0,2,8,11,14],"hard":[2,3,14],"hardcod":14,"hardlin":7,"hardwar":[0,2,4,5,8,9,11,12,13,14],"harm":[4,6],"has_path":[0,8],"hasattr":0,"hash":[0,7,8,11,12,14],"hash1":11,"hash2":11,"hash_from_name_and_ident":8,"hashlib":11,"hashmap":0,"have":[0,2,3,5,7,8,9,10,11,12,13,14],"hazard":8,"hdlc":0,"header":[0,5,8,11],"header_1":11,"header_2":11,"health":4,"hear":[11,14],"heard":[8,9,11,12],"heart":14,"heavi":14,"height":5,"held":[5,12],"helium":0,"hellman":[7,11],"hello":12,"hello_world":12,"help":[0,2,7,10,11,12,14],"helper":[0,12],"here":[0,2,5,11,12,14],"herebi":6,"heterogen":[2,4,13],"hex":[0,12],"hexadecim":[0,11,12],"hexbyt":12,"hf":[9,14],"hidden":12,"hide":[2,14],"hierarch":[13,14],"hierarchi":14,"high":[3,5,7,11,12,13,14],"higher":[5,7,13],"highest":8,"highli":[5,10,11,12],"highlight":12,"hijack":14,"hint":[0,12],"histori":[9,12],"hit":0,"hkdf":11,"hmac":[11,13],"hoc":[13,14],"hold":[5,8,11,14],"holder":[6,7],"hole":14,"hollow":14,"home":[2,7,9,12,14],"homebrew":5,"hop":[5,7,8,11,12,13,14],"hopefulli":7,"hops_to":8,"host":[0,4,5,7,9,11,12],"hostil":4,"hostnam":[5,14],"hotspot":14,"hour":[0,5,12,14],"hous":[2,14],"how":[0,2,3,5,7,9,11,12,13,14],"howev":[2,5,7,11],"http":[0,9,10,14],"hub":[5,9,12],"hum":14,"human":[0,4,5,6,7,8,10,11],"hundr":[7,9,14],"hungri":3,"hw_mtu":0,"hwrev":12,"hz":[5,12],"i":[0,2,3,4,5,6,7,8,9,10,11,12],"i2p":[2,4,7,9,13],"i2p_tunnel":5,"i2pd":[2,5],"i2pinterfac":[2,5],"ia":12,"ic":3,"ic_burst_freq":5,"ic_burst_freq_new":5,"ic_burst_hold":5,"ic_burst_penalti":5,"ic_held_release_interv":5,"ic_max_held_announc":5,"ic_new_tim":5,"icmp":9,"icon":[12,14],"id":[5,8,11,12],"id_callsign":5,"id_interv":5,"idea":[2,11,12,14],"ideal":[9,12,13],"ident":[0,2,4,5,7,8,9,12,13],"identif":[4,5,13],"identifi":[0,5,7,8,11,12,13],"identifyexampl":0,"identity_data":12,"ie":12,"if00":12,"ifac":[0,2,5,7,11,12],"ifac_s":5,"ifconf":0,"ifconfig":12,"ignor":[5,7,8,10,11,12],"ignored_devic":5,"illus":4,"illustr":[0,5,11],"imag":14,"imagin":[7,14],"immedi":[5,12,14],"immens":14,"immort":14,"immut":14,"impact":[5,7,8,11],"impati":14,"imperson":7,"implement":[0,4,5,7,8,9,10,11,14],"impli":6,"implic":[4,5,7],"implicit":[7,8,11],"implicitli":12,"import":[0,2,3,5,7,8,10,11,12],"importantli":[2,14],"importlib":0,"imposs":[11,14],"impract":12,"improv":[2,4,5,9,10,14],"in_fram":0,"in_wait":0,"inactive_for":8,"inadvert":12,"inbound":[0,5,8],"inbox":7,"includ":[0,3,4,5,6,7,8,9,11,13],"inclus":7,"incom":[0,5,8,12],"incompat":[8,11],"incomplet":7,"increas":[5,8,12],"incredibli":14,"incur":5,"indefinit":12,"independ":[4,8,11],"index":[0,2,4],"indic":[0,8],"indiffer":14,"indirectli":[6,11],"individu":[2,5,8,10,11,12,13,14],"inevit":[2,11],"infer":11,"infinit":14,"influx":[5,9],"influxdb":9,"info":[8,11,12,14],"inform":[0,2,4,5,7,8,9,10,11,12,14],"infrastructur":[3,4,5,7,9,11,12],"ingest":14,"ingo":8,"ingress":[0,5],"ingress_control":5,"inhabit":14,"inher":7,"init":2,"initi":[0,5,7,8,11,12,13],"initialis":[0,8,12],"input":[0,12],"insert":11,"insid":[11,14],"insight":14,"inspect":[2,5,7,11,12],"inspir":14,"instal":[0,4,5,11,12,13],"instanc":[0,4,5,8,9,11,12,14],"instance_control_port":12,"instance_nam":12,"instant":14,"instanti":8,"instantli":12,"instead":[0,2,5,8,11,12,14],"institut":14,"instruct":[2,14],"int":[0,8],"integ":[0,8],"integr":[2,9,11,12,14],"intellig":[6,14],"intend":[2,5,7,11,12],"intens":12,"intent":[7,14],"intention":[9,11],"inter":[2,8,11],"inter_byte_timeout":0,"interact":[0,2,4,7,8,11,12,14],"intercept":7,"interchang":5,"interconnect":[2,5,7,11],"interest":[9,11,14],"interfac":[3,4,7,8],"interface_class":0,"interface_discovery_sourc":[8,12],"interface_en":12,"interfer":[7,12],"intermedi":[7,14],"intermediari":[5,8,11],"intermitt":[5,7,14],"intern":[0,5,8,11,12,14],"internal_1":5,"internet":[4,5,7,9,11,12,13,14],"internetwork":2,"interoper":[3,7,9,11,13],"interrupt":5,"interv":[5,8,12],"intervent":12,"intiat":0,"intim":14,"introduc":[11,12,14],"introduct":4,"introductori":4,"intuit":[7,13],"invalid":[0,5,8],"invari":14,"invers":11,"invert":14,"invest":7,"invis":[2,5],"invit":5,"invok":12,"involv":[7,10],"io":3,"iodin":9,"ioerror":0,"iot":3,"ip":[2,3,4,5,7,11,12,13],"ipv4":5,"ipv6":[2,5,12],"irc":9,"irrelev":10,"irrespons":14,"is_compress":8,"is_connected_to_shared_inst":0,"is_open":0,"is_path_respons":8,"is_ready_to_send":[0,8],"isdir":0,"isfil":0,"isinst":0,"ism":[3,11],"isn":14,"isol":[2,5,12],"isp":[5,7,14],"issu":[4,5,7],"its":[3,5,6,7,8,11,12,14],"itself":[4,7,9,11,12,14],"iv":[11,13],"j":[4,12],"jail":12,"javascript":9,"job":0,"join":[0,2,7,9,11],"journei":7,"json":[12,14],"just":[0,2,3,5,7,9,11,12,13,14],"k":[0,12],"kb":12,"kbp":12,"keep":[0,2,7,8,11,12,13,14],"keepal":[8,11],"keepalive_timeout_factor":8,"kei":[0,4,5,7,8,12,13,14],"kept":[5,7,8,11],"kernel":[5,12,13],"keyboardinterrupt":0,"keyerror":8,"keypad":9,"keypair":[7,11],"keyr":14,"keyset":[11,12,13],"keysiz":8,"keystor":7,"khz":5,"ki":0,"kill":[8,11,14],"kind":[3,5,6,7,9,11,14],"kiss":[3,4,9,12,13],"kiss_fram":5,"kissinterfac":[5,12],"knock":14,"know":[0,2,3,5,7,8,11,12,14],"knowledg":[7,11],"known":[0,5,8,11,12,13,14],"ko":10,"krypton":0,"l":[5,12],"la":12,"labor":14,"lack":11,"laid":11,"lan":5,"landlord":14,"languag":[6,9,12],"lantern":14,"laptop":[7,14],"larg":[0,3,5,7,8,11,12,13,14],"larger":[7,11,12],"laser":5,"last":[0,5,8,12,14],"last_read_m":0,"last_unit":0,"latenc":[2,7,11,13,14],"later":[0,2,5,9,12],"latest":[0,2,5,8,12],"latest_buff":0,"latest_client_link":0,"latitud":5,"laucnh":2,"launch":[9,12],"law":14,"layer":[3,5,7,8,9,11,12,13,14],"lcd":9,"lead":[2,11,14],"leak":2,"learn":[0,2,6,7,10,11,14],"leas":14,"leash":14,"least":[2,3,5,7,11,12,13],"leav":[7,9,11,14],"ledger":[11,14],"left":[5,8,11,12],"legaci":[7,14],"legal":[5,14],"legisl":5,"legitim":[2,7,12],"len":[0,14],"length":[0,5,8,11],"less":[0,2,3,5,8,11,13,14],"let":[0,2,5,7,9,11,12,14],"level":[3,5,7,11,12],"lever":14,"li":14,"liabil":6,"liabl":6,"liber":[3,4],"liberapai":10,"libffi":2,"librari":[2,9,14],"licens":[4,11,13,14],"lie":14,"life":14,"lifelin":14,"lift":[12,14],"light":[12,14],"lightweight":13,"like":[0,2,3,5,7,8,9,11,12,13,14],"limit":[0,2,3,4,6,7,9,11],"line":[0,2,4,5,9,11,12,13,14],"linger":12,"link":[2,3,4,5,7,8,9,12,13,14],"link_clos":0,"link_establish":0,"link_id":[0,8],"link_mtu_discoveri":8,"linkexampl":0,"linux":[2,3,5,9,11],"liquid":14,"list":[0,2,3,4,5,8,9,11,13,14],"list_deliv":0,"list_fil":0,"list_filt":12,"list_packet":0,"list_receipt":0,"list_timeout":0,"listdir":0,"listen":[0,2,4,9,11,12,14],"listen_ip":5,"listen_on":[2,5],"listen_port":5,"liter":12,"litter":14,"littl":[3,9,11],"live":[2,8,9,14],"lki":11,"lkr":11,"ll":[0,13,14],"llm":9,"ln":12,"load":[0,2,3,5,8,12,13,14],"load_private_kei":8,"load_public_kei":8,"local":[0,2,4,5,7,8,9,11,13,14],"locat":[2,5,7,11,12,14],"lock":14,"log":[0,2,5,12,14],"log_crit":0,"log_error":0,"log_info":0,"log_verbos":0,"logdest":8,"logfil":12,"logic":[11,14],"login":12,"loginctl":12,"loglevel":[0,8,12],"long":[0,2,3,5,7,8,11,12,14],"longer":[0,2,11,12,14],"longest":5,"longitud":5,"look":[0,2,5,7,9,11,12,14],"loop":0,"lora":[2,3,4,7,9,11,13,14],"lorawan":[3,11],"loss":[5,7,11],"lost":14,"lot":[7,11,14],"loudest":14,"low":[2,3,5,7,9,11,13,14],"lower":[0,2,5,12],"lowli":14,"ltu":3,"lunar":4,"lxmf":[4,5,7,8,12],"lxmfy":4,"lxst":4,"m":[0,2,11,12],"mac":[5,11],"machin":[2,6,11,12,14],"machineri":9,"maco":[4,9],"made":[2,5,8,11,12,14],"mai":[2,5,7,8,9,11,12,14],"mailbox":9,"main":[0,12],"maintain":[2,7,11,12,13],"mainten":[2,7,11,14],"make":[0,2,3,5,7,9,10,11,12,13,14],"malici":[2,7,11,12],"malinform":10,"manag":[2,4,7,8,9,11,13,14],"mani":[0,2,3,5,7,8,9,11,12,13,14],"manipul":[11,13,14],"manjaro":2,"manner":[7,9],"manual":[0,2,5,7,8,11,12,13,14],"manufactur":[3,5],"map":[5,9,11,12,14],"mark":[2,6,8,11,13,14],"markdown":12,"market":14,"markqvist":[0,10],"markup":[9,12],"mass":14,"master":[0,8,12,14],"match":[0,5,11,12,14],"materi":9,"math":14,"mathemat":14,"matter":[2,5,7,14],"matur":12,"max":12,"maximum":[0,5,8,11,12],"mayb":14,"mbp":12,"mdu":[0,8],"me":[5,14],"mean":[2,3,5,7,8,11,12,14],"meaning":2,"meantim":8,"measur":[7,11,14],"mechan":[2,4,5,7,12,13],"media":14,"mediev":14,"medium":[0,3,4,5,7,8,9,11,13],"meet":14,"megaphon":14,"member":[2,11],"memori":[2,7,11],"mental":14,"mention":[5,11],"menu":0,"menu_mod":0,"merchant":6,"mere":14,"merg":[6,12],"merit":4,"mesh":[2,5,7,11,12,13,14],"meshchat":4,"meshchatx":4,"messag":[0,2,7,8,9,11,12,14],"message_class":8,"messagebas":[0,4,8],"messagecallbacktyp":8,"messeng":[7,11],"met":[2,14],"metadata":[2,5,11,12,14],"metaphor":14,"metavar":0,"meter":5,"meth":0,"method":[0,2,5,8,11],"methodologi":[11,12],"metric":9,"mevpekyafshak5wr":5,"mhz":[5,11],"mi":0,"microcontrol":11,"micromanag":14,"micron":[4,12],"microwav":7,"might":[2,5,7,11,12,14],"mikrotik":3,"millimet":3,"million":14,"millisecond":[0,7,12,14],"mind":[7,14],"mindset":14,"mine":14,"miner":14,"minim":[3,4,5,11],"minimalsampl":0,"minimum":[0,2,5,8,11,12,14],"minimum_bitr":8,"miniscul":14,"minut":[0,2,5,11,14],"mirror":[7,12],"misconfigur":2,"mislead":[2,14],"miss":[0,2],"missil":14,"mistak":2,"misunderstand":10,"mitig":7,"mix":[4,5,7,12],"mixtur":13,"mobil":[5,7,11],"mode":[0,2,3,4,7,8,9,11,12,13,14],"model":[6,7,12,14],"modem":[4,5,7,8,9,11,13,14],"modem73":9,"moder":5,"modern":[2,3,9,14],"modifi":[5,6,7,11,12],"modul":[0,2,3,4,5,7,11,12,13],"modular":9,"moment":[11,14],"momentarili":5,"monero":10,"monitor":[2,5,9,11,12],"moon":0,"moral":14,"more":[0,2,3,5,7,8,9,10,11,12,13,14],"most":[2,3,5,7,8,9,11,12,14],"mostli":[5,7,11],"motiv":4,"mountain":14,"move":[5,7,11,12,14],"msgtype":[0,8],"mtu":[0,5,8,11,13],"mu":12,"much":[2,5,7,11,12,13,14],"multi":[4,7,9,11,12,13],"multicast":5,"multicast_address_typ":5,"multilater":11,"multipl":[0,5,7,9,11,12],"multiplex":[0,12],"multipoint":11,"multitud":2,"must":[0,2,5,7,8,11,12,14],"mutual":14,"mw":5,"my":[5,11,12,14],"my_fil":12,"my_ident":12,"my_network":[11,12],"my_network_ident":5,"mycal":5,"myfriend":14,"myrepo":12,"myriad":11,"mysteri":14,"n":[0,11,12],"name":[0,2,4,5,7,8],"namespac":0,"narg":0,"nat":[2,5],"nativ":[0,7,9],"natur":5,"navig":12,"nearbi":[5,7],"nearest":5,"nears":11,"neat":7,"neccessari":5,"necesarri":5,"necessari":[3,5,7,8,11,12],"necessarili":11,"need":[0,2,3,4,5,7,8,9,10,11,12,13,14],"neg":2,"neglig":[11,14],"negoti":14,"neighbor":14,"neither":[8,11],"neon":0,"neopixel":12,"nerd":12,"net":5,"netcat":5,"network":[0,3,5,8,12,13,14],"network_ident":[5,11,12],"network_nam":[2,5],"neutral":[7,14],"never":[5,7,8,11,14],"new":[0,2,4,7,8,11,12,14],"new_id":12,"new_ident":12,"newer":[8,11],"newest":11,"newli":[5,8,11],"newlin":[5,12],"next":[2,5,8,11,14],"next_hop":8,"next_hop_interfac":8,"nice":14,"nicknam":11,"no1cll":5,"no_data_for":8,"no_inbound_for":8,"no_outbound_for":8,"noauth":12,"nobl":0,"noble_ga":0,"noble_gas":0,"nocheck":12,"node":[2,4,5,12,13],"node_nam":12,"noid":12,"nois":[8,10,14],"noisi":14,"nomad":[4,12],"nomadnet":9,"nomadnetwork":9,"non":[2,5,8,9,11,14],"none":[0,2,5,8,11,12],"noninfring":6,"nor":[2,14],"normal":[0,2,5,8,11,12],"notabl":9,"notat":[11,12],"note":[0,3,4,5,8,11,12],"noth":[3,7,13,14],"notic":[5,6,11,12],"notif":[0,8],"now":[0,2,11,12,14],"np":12,"nrf52":3,"nt":0,"num":0,"number":[0,2,5,7,8,9,11,12,14],"o":[0,2,5,11,12,13],"object":[0,8,14],"obscur":2,"observ":[7,14],"obsolet":14,"obstacl":14,"obtain":[2,3,6,8,11],"obvious":11,"occupi":14,"occur":[0,5,12,13],"ocean":14,"ocur":8,"odd":0,"ofdm":9,"off":[2,5,7,9,11,12,13,14],"offer":[2,4,5,7,8,9,11,12,14],"offic":7,"offlin":[0,2,7,9],"often":[2,5,7,11,12,14],"oganesson":0,"old":[0,2,3,10,11,14],"older":12,"omit":8,"on_interfac":8,"onc":[0,2,3,5,8,11,12,13,14],"one":[0,2,3,5,7,8,9,11,12,13,14],"ones":[2,5,7,12],"oneself":11,"ongo":9,"onli":[0,2,3,5,7,8,11,12,13,14],"onlin":[0,12,14],"onto":[2,11,14],"opaqu":7,"open":[0,2,3,4,5,7,8,9,10,11,12,13],"open_port":0,"openmodem":[5,13],"openssl":[2,11],"openwrt":4,"oper":[2,3,5,7,8,11,12,13,14],"opinion":10,"opkg":2,"opportun":2,"opportunist":7,"opposit":[0,5],"oppress":14,"opt":11,"optic":[3,13,14],"optim":[2,7,12,14],"option":[0,2,3,4,7,8,9,11,12,14],"ord":0,"order":[0,8,12],"organ":[2,7,11,12,14],"organis":[5,10],"orient":11,"origin":[0,7,9,11,14],"os":2,"other":[0,2,3,5,6,7,8,9,11,12,14],"otherwis":[0,6,8],"our":[0,5,11,14],"ourselv":7,"out":[0,3,5,6,8,9,11,12,14],"outbound":[8,11],"outgo":[0,5,8,11,12],"outlin":[2,3,11],"output":[5,12],"outsid":[8,13,14],"over":[0,3,4,5,7,8,9,10,11,12,13,14],"overal":[11,12],"overcom":11,"overhead":[2,3,5,11,14],"overlai":2,"overli":10,"overlord":14,"overrid":0,"oversight":11,"overview":[4,5,12],"overwhelm":[5,7,8],"overwrit":12,"own":[0,2,7,8,11,12,13,14],"owner":[0,14],"ownership":14,"p":[0,12],"pack":[0,8],"packag":[0,2,5,9,11],"packb":0,"packed_s":0,"packet":[0,2,4,5,7,8,9,12,13,14],"packet_callback":0,"packet_deliv":0,"packet_hash":0,"packet_receipt":[0,8],"packet_timed_out":0,"packetreceipt":[0,4,8],"pad":[11,13],"page":[4,11,12,14],"page_cont":12,"pagin":12,"pair":[5,8,11,12],"pamac":2,"panic":[0,12,14],"panic_on_interface_error":[0,12],"panopticon":14,"paper":9,"par":[0,2],"paradox":14,"parallel":2,"paralysi":14,"param":0,"paramet":[0,3,4,8,11,12],"paranoia":14,"parasit":14,"pariti":[0,5,12,13],"parity_even":0,"parity_non":0,"parity_odd":0,"pars":0,"parse_arg":0,"parser":[0,4],"part":[0,2,5,7,8,9,11,12,14],"particip":[2,4,5,7,11,12,14],"particular":[0,3,5,6,11,12],"particularli":[5,12],"partner":14,"pass":[0,3,5,7,8,11,12,14],"passphras":[2,5,7,11],"passport":11,"past":12,"patch":14,"path":[0,2,3,5,7,8,11,12,14],"path_respons":8,"pathfinder_m":8,"patient":14,"pattern":[3,4,7,11],"payload":[0,5,8,11,12],"pdf":4,"peac":14,"peach":0,"peak":12,"peer":[0,2,5,8,9,11,12,14],"penalti":5,"pend":[0,11],"peopl":[2,9,11,14],"per":[5,7,8,9,11,12,13,14],"percent":[0,5],"percentag":8,"perfectli":2,"perform":[0,2,5,7,8,9,11,12,14],"perhap":[2,14],"period":[0,5,8,11,12],"peripher":9,"perman":[2,5,12],"permiss":[5,6,12,14],"permissionless":[11,12],"permit":6,"perpetu":14,"persecut":11,"persist":[5,12,14],"person":[4,5,6,7,10,11],"perspect":[5,7,8,11,13],"pet":0,"petit":14,"philosophi":[10,11,13,14],"phone":[2,4,7,14],"phonebook":9,"photo":14,"phy":12,"physic":[0,2,3,4,5,7,8,9,11,12,13],"pi":[0,4,7,11,12,13,14],"pick":11,"piec":11,"pillar":14,"ping":[12,14],"pip":[0,2,3,5,12],"pip3":2,"pipe":[4,9,12,13,14],"pipeinterfac":[3,5,9],"pipx":2,"pitfal":11,"pkcs7":[11,13],"pkg":2,"place":[0,2,5,7,11,12,14],"plaform":3,"plain":[0,3,5,8,11,14],"plain_mdu":8,"plaintext":[0,8,14],"plan":[7,11,14],"planet":14,"planetari":[13,14],"platform":[0,3,4,9,11,12,14],"pleas":[0,2,5,8,12,14],"plenti":[7,11],"plug":[12,14],"plugin":[9,14],"pmr":11,"poetri":14,"point":[2,3,5,7,9,10,11,12,14],"pointer":2,"polici":[12,14],"polit":14,"pomelo":0,"popul":8,"popular":13,"port":[0,2,3,4,5,7,11,13,14],"port0":12,"portabl":[4,5,7,11],"portion":6,"pose":[2,11],"posit":[0,12],"posix":2,"possess":[5,11,14],"possibl":[2,3,5,7,8,9,11,12,13],"possibli":[2,11],"post":[0,4],"postfix":12,"potenti":[0,2,5,10,11,12,13,14],"power":[2,3,4,5,7,9,11,12,13],"powershel":2,"ppp":0,"practic":[7,11,13,14],"pre":[2,7,8,11],"preambl":[5,12],"preced":0,"preciou":7,"precompil":2,"predatori":14,"predict":11,"prefer":[2,10,11,12],"prefer_ipv6":5,"premis":[7,14],"prepar":[0,11],"prerequisit":8,"presenc":[4,5,8],"present":[5,7,9,11,12,14],"preserv":[2,4,8],"preshar":11,"press":0,"pretend":[9,11],"prettyhexrep":0,"prevent":[5,7,12,14],"previou":0,"previous":[5,8,11],"price":14,"primari":[11,14],"primarili":[5,7,9],"primarlii":2,"primit":[2,4],"principl":[4,7,11,13],"print":[0,5,12],"print_filelist":0,"print_help":0,"print_menu":0,"priorit":[7,11,14],"prioriti":11,"prioritis":[4,5,7,8],"privaci":[2,5,9,14],"privat":[2,5,7,8,9,10,11,12,13,14],"private_ret":2,"privileg":[12,14],"probabl":[0,2,7,11,12,13],"probe":12,"problem":[2,11,12,14],"proc":12,"procedur":[2,8,11],"process":[0,2,3,5,7,8,11,12,14],"process_incom":0,"process_outgo":0,"product":[12,14],"profil":14,"profit":14,"profound":[7,14],"profoundli":14,"program":[0,3,4,5,8,11,13],"program_setup":0,"programm":11,"programmat":11,"progress":[0,8,12,13],"progress_callback":8,"project":[9,10,14],"promis":2,"prompt":[0,2],"proof":[0,5,7,8,11,12,14],"proof_packet":0,"proof_requested_callback":8,"proof_strategi":8,"propag":[4,5,7,8,9,12,14],"proper":2,"properli":2,"properti":[0,7,8],"proport":11,"protect":[2,12,14],"protocol":[2,3,4,5,7,12,13],"prove":[0,7,11,14],"prove_al":[0,8],"prove_app":8,"prove_non":8,"proven":[8,11],"provid":[0,2,3,4,5,6,7,8,9,11,12,13,14],"provis":[3,12],"prv_byte":8,"pseudo":12,"psycholog":14,"pub_byt":8,"public":[0,4,5,7,8,10,12,13],"public_inform":0,"publicli":[2,5,11,12],"publish":[2,4,5,6,8,11],"publish_blackhol":12,"publish_blackhole_en":8,"publish_ifac":5,"pull":12,"puppet":14,"purchas":[2,11,13],"pure":[4,11],"purg":8,"purpos":[2,3,5,6,7,8,9,11,12,14],"purposefulli":6,"push":[9,12,14],"put":[0,3,5,12],"py":[0,11,12],"py3":2,"pyca":[2,11],"pygment":12,"pyseri":[0,2],"python":[0,4,5,8,11,12,13,14],"python3":[0,2,3],"q":[0,12],"qr":[7,9],"qualiti":[8,12,14],"queri":[0,2,8,12,14],"question":[2,3,5],"queu":[8,12],"queue":[5,11],"quick":12,"quickli":[9,10,11,13],"quiet":[5,12,14],"quinc":0,"quirk":2,"quit":[0,2],"qvist":[6,13],"r":[0,5,11,12],"radic":14,"radio":[4,5,7,8,9,11,12,13,14],"radon":0,"rais":[0,8],"rak":3,"ram":[2,5],"randint":0,"random":[0,8,10,11],"random_text_gener":0,"randomis":11,"randomli":[0,11],"rang":[0,2,3,5,7,11,12,13,14],"rapidli":5,"rare":[2,5],"raspberri":[4,7,11,12,13],"rasperri":2,"ratchet":[8,11],"ratchet_count":8,"ratchet_expiri":8,"ratchet_id_receiv":8,"ratchet_interv":8,"ratchets":8,"ratchets_path":8,"rate":[0,2,4,8,9,12],"rather":[2,8,9,12,14],"ratio":8,"raw":[0,3,8,12],"rawchannelread":[4,8],"rawchannelwrit":[4,8],"rawiobas":8,"rb":0,"rbrowser":4,"re":[0,5,7,8,11,12,14],"reach":[2,4,5,7,8,12,14],"reachabl":[0,2,5,7,8,9,11,12],"reachable_on":5,"read":[0,2,5,7,8,11,12,13,14],"read_loop":0,"readabl":[0,5,8,11,12,14],"reader":[0,8],"readi":[0,2,3,5,8,13,14],"readili":13,"readm":12,"ready_byt":[0,8],"ready_callback":8,"real":[2,3,5,7,9,12,13,14],"realiti":[2,10,14],"realiz":14,"realli":[5,8,12,14],"realm":14,"reappear":5,"reason":[2,5,11,12],"reassembl":11,"reboot":14,"rebroadcast":7,"rebuilt":14,"recal":[0,8,12],"recall_app_data":8,"recap":11,"receipt":[0,7,8,11],"receiv":[0,2,5,7,8,10,11,12,14],"receive_path_respons":8,"receive_stream_id":8,"received_announc":[0,8],"recent":[8,11],"recept":8,"reception_rssi":0,"reception_snr":0,"reception_stat":0,"recip":2,"recipi":[11,14],"reclaim":14,"recogn":[11,14],"recognis":12,"recognit":14,"recommend":[0,2,5,11],"recondit":12,"reconnect":[0,7,14],"reconnect_port":0,"reconstruct":11,"record":[2,11,12],"record_stat":12,"recoveri":5,"recreat":11,"recurs":[8,11],"reduc":[5,12],"redund":[2,7],"ref":12,"refer":[0,2,4,5,9,12,14],"refin":10,"refresh":12,"refus":7,"regain":2,"regard":11,"region":5,"regist":[0,8,12],"register_announce_handl":[0,8],"register_message_typ":[0,8],"register_request_handl":[0,8],"registrar":14,"registri":14,"regul":5,"regular":12,"regulatori":14,"regurgit":14,"reject":14,"rel":[3,5,7,11],"relai":[2,4],"relat":2,"relationship":[7,11,12,14],"releas":[2,5,8,11,14],"relev":[0,2,3,5,8,11,12,14],"reli":[2,5,7,10,11,12,14],"reliabl":[2,3,5,7,8,11,13,14],"relianc":[2,14],"relief":7,"reload":12,"rem":0,"remain":[5,7,8,9,11,14],"rememb":[7,8,11],"remot":[0,4,8,11],"remote_ident":[0,8],"remote_identifi":0,"remote_management_allow":12,"remote_management_en":8,"remote_p":0,"remotesensor":11,"remov":[8,12,14],"remove_message_handl":8,"remove_ready_callback":8,"render":[9,12,14],"rent":14,"replac":[0,2,7,8,9,11,12,14],"repli":[0,12],"replic":[3,11],"reply_data":0,"reply_messag":0,"reply_text":0,"repo":12,"repo_nam":12,"report":[5,8,10,12],"repositori":[2,11,12,14],"repres":[7,11,14],"represent":[0,8,14],"repurpos":2,"reput":[11,12],"request":[4,5,7,8,11,12,13,14],"request_destin":0,"request_fail":0,"request_id":[0,8],"request_packet":0,"request_path":[0,8],"request_receipt":[0,8],"request_receiv":0,"requested_at":[0,8],"requestexampl":0,"requestor":5,"requestreceipt":[4,8],"requir":[0,2,5,7,8,9,11,12,13,14],"require_shared_inst":8,"required_discovery_valu":[8,12],"rerout":14,"resend":8,"reserv":[0,7,8,14],"resid":[5,14],"resili":[2,7,9,12,13,14],"resist":7,"resiz":12,"resolut":[2,5,11],"resolv":[4,5,7,11,12],"resourc":[0,2,4,5,7,8,10,12,14],"resource_callback":8,"resource_sending_conclud":0,"resource_strategi":8,"respawn":5,"respawn_delai":5,"respawn_interv":5,"respect":[5,7,12,13,14],"respond":[0,7,8,12],"respond_to_prob":12,"respons":[4,5,8,11,13,14],"response_callback":[0,8],"response_gener":[0,8],"rest":[7,13,14],"restart":[5,12],"restartsec":12,"restor":[2,5,14],"restrict":[5,6,7,12,14],"result":[0,2,5,11,12],"ret":[4,11],"retain":[5,8],"retained_ratchet":8,"retibb":4,"reticulum":[0,5,7,8],"retipedia":4,"retransmiss":[7,11],"retransmit":[5,11],"retri":[0,8,11],"retriev":[8,12],"return":[0,5,8,12,14],"reveal":[2,8,11,13],"revers":12,"review":11,"revis":12,"revok":14,"revolut":14,"rfe":12,"rich":9,"ridicul":11,"right":[2,5,6,14],"rigid":14,"rington":9,"rippl":14,"risc":4,"risk":11,"riski":14,"rmap":2,"rn":[0,2,3,4,8,11,12,14],"rncp":4,"rngit":4,"rngit_config":12,"rnid":[4,11],"rnmon":4,"rnode":[2,4,11,12,13],"rnodeconf":[3,4],"rnodef3b9":5,"rnodeinterfac":[2,3,5,12],"rnodemultiinterfac":5,"rnpath":[2,4,5],"rnphone":9,"rnprobe":[2,4],"rns_bin_dir":12,"rns_config":12,"rns_remot":12,"rnsconfig":12,"rnsd":[2,4],"rnsh":[4,9],"rnspure":[2,11],"rnstatu":[2,4,5,11],"rnstransport":[5,12],"rnx":4,"road":14,"roadmap":[10,14],"roam":[4,5,7],"robot":11,"robust":[2,5,14],"role":7,"roll":5,"rom":12,"room":[9,14],"root":11,"rotat":[8,11,12],"round":[0,8,12],"rout":[2,3,5,7,8,9,11,12,13,14],"router":[2,5,7,12,14],"rpc":12,"rpc_kei":12,"rprogress":0,"rrc":4,"rrcd":9,"rssi":[0,8,12],"rtsct":0,"rtt":[0,8,11],"rttstring":0,"rubber":14,"rule":[2,4,5,7,12,14],"run":[0,2,3,5,7,8,9,11,12,13,14],"runtim":[0,11],"rust":2,"rw":12,"rx":[5,12],"rxb":0,"sa":9,"safe":[11,12,14],"safeguard":14,"sai":14,"said":11,"same":[0,2,3,5,7,8,9,11,12,14],"sand":14,"satellit":7,"satisfi":11,"save":[8,11,12],"save_error":0,"saved_filenam":0,"saw":9,"scalabl":[12,13],"scale":[11,13,14],"scan":[2,5],"scarc":14,"scarciti":4,"scatter":14,"scenario":[2,5,11],"schedul":8,"scheme":[3,5,12],"scope":5,"scrape":14,"scratch":[3,14],"screen":0,"script":[2,3,5,12],"scrutini":11,"seamless":[5,11],"seamlessli":[5,7,9],"search":[4,8,9],"second":[0,5,7,8,9,11,12,13,14],"secreci":[5,8,9,11,13],"secret":[7,11],"section":[2,3,5,7,9,11,12],"secur":[2,4,7,9,11,12,13,14],"see":[0,2,5,7,8,11,12,13,14],"seek":[11,14],"seen":[5,11,14],"segment":[0,2,5,7,8,11,12,13],"select":[0,2,5,14],"self":[0,2,11,13,14],"sell":6,"semi":12,"semtech":3,"send":[0,5,7,8,11,12,14],"send_stream_id":8,"sender":[0,2,7,11,12],"sens":[7,14],"sensibl":[2,3,5],"sensit":14,"sensor":[7,11],"sent":[0,2,7,8,11,12,14],"sentiment":11,"separ":[0,5,7,9,11,12],"sequenc":[0,8,11,12,13],"sequenti":13,"serfdom":14,"seri":3,"serial":[0,2,4,7,11,13,14],"serialinterfac":[3,5],"serv":[0,3,5,7,9,10,11,12,14],"serve_nomadnet":12,"serve_path":0,"server":[0,2,3,4,7,8,9,11,12,14],"server_buffer_readi":0,"server_callback":0,"server_client_connect":0,"server_destin":0,"server_fil":0,"server_ident":0,"server_link":0,"server_loop":0,"server_message_receiv":0,"server_packet_receiv":0,"servic":[2,4,5,7,9,11,14],"session":[2,9,11,12],"set":[0,2,3,5,7,8,9,11,12,13,14],"set_default_app_data":8,"set_delivery_callback":[0,8],"set_link_closed_callback":[0,8],"set_link_established_callback":[0,8],"set_packet_callback":[0,8],"set_proof_requested_callback":8,"set_proof_strategi":[0,8],"set_ratchet_interv":8,"set_remote_identified_callback":[0,8],"set_resource_callback":8,"set_resource_concluded_callback":[0,8],"set_resource_started_callback":[0,8],"set_resource_strategi":[0,8],"set_retained_ratchet":8,"set_timeout":[0,8],"set_timeout_callback":[0,8],"setup":[0,2,4,5,12],"sever":[2,7,8,12],"sf":12,"sh":5,"sha":[7,8,11],"sha256":[11,13],"shall":[6,11],"shape":[7,14],"share":[0,2,7,8,9,11,12,14],"share_inst":12,"shared_instance_port":12,"shared_instance_typ":[8,12],"shelf":[11,13],"shell":[2,4,12,14],"shift":14,"shine":14,"ship":[11,14],"shop":[0,14],"short":[3,5,11,12],"shorter":5,"shorthand":[5,12],"shot":2,"should":[0,2,5,7,8,11,12,14],"should_ingress_limit":0,"should_quit":0,"should_use_implicit_proof":8,"shout":14,"show":[2,12,14],"shown":[0,10],"shut":14,"side":[5,12,13],"sideband":[2,4,12],"sign":[5,7,8,11,12,14],"signal":[0,5,8,11,12,14],"signatur":[7,8,11,12,13,14],"signifi":11,"signific":7,"significantli":[5,8],"silent":12,"similar":[0,2,3,5,8,9,12,13],"simpl":[0,2,3,8,9,11,12,13,14],"simpler":[5,7,12,13],"simplest":[5,11],"simpli":[0,2,3,5,7,9,10,11,12,14],"simplic":11,"simplifi":0,"simplyequip":3,"simultan":[2,11],"sinc":[0,2,5,7,8,11,14],"singl":[0,2,5,7,8,11,12,13,14],"singular":11,"sit":[2,14],"site":[5,7,14],"situat":[2,3,5,7,11,12],"size":[0,2,5,8,11,12],"size_str":0,"skip":0,"sky":4,"slap":14,"slave":14,"sleep":[0,2,12],"slice":[0,14],"slightli":[0,2,14],"sloppi":14,"slottim":[5,12],"slow":[0,5,7,9,11,14],"slower":[5,8,11],"small":[0,2,5,7,8,11,13,14],"smaller":8,"smallest":2,"snippet":12,"snr":[0,8,12],"so":[0,2,3,5,6,7,8,9,10,11,12,13,14],"social":[2,14],"societi":14,"socket":[5,12,13,14],"soft":14,"softwar":[2,3,5,6,9,11,14],"solar":14,"sole":5,"solid":10,"solut":[11,12],"solv":[11,14],"some":[0,2,3,5,7,8,9,11,12,14],"some_remot":12,"someon":[2,5,12,14],"someth":[7,11,14],"somethign":0,"sometim":[3,5,9,14],"somewhat":2,"somewher":14,"soon":[8,12],"sort":[5,11,12],"soul":14,"sound":14,"soundmodem":5,"sourc":[0,2,3,4,7,8,11,13,14],"sovereign":[2,11,14],"sovereignli":14,"sovereignti":[4,13],"space":[0,2,3,7,11,13,14],"spam":[2,5,11,12],"spammi":12,"span":[5,7,11],"spawn":5,"spe":5,"speak":[10,14],"spec":11,"special":[9,11,12],"specif":[0,3,4,5,7,8,12,13,14],"specifi":[0,2,3,5,7,8,11,12],"spectrum":[5,11,14],"speed":[0,5,8,11,12,14],"sphere":14,"spinner":14,"spirit":9,"split":0,"sponsor":10,"spoof":14,"spread":[5,12],"spreadingfactor":5,"squelch":5,"ssh":[9,12],"ssid":5,"ssl":14,"stabil":[7,14],"stabl":[2,5,7,11,13],"stack":[0,2,7,8,9,11,12,13,14],"stage":11,"stai":[0,11,12,14],"stale":[7,8],"stale_grac":8,"stale_tim":8,"stamp":[5,8,12],"stanc":14,"stand":14,"standalon":[4,9],"standard":[3,5,9,11,12],"start":[0,3,4,5,7,8,9,11,12,14],"startup":[0,2,12],"stat":[8,12],"state":[0,7,14],"static":[2,5,8,12,14],"staticmethod":0,"station":5,"stationari":[7,12,14],"statist":[0,5,8,10,12],"stats_ignore_ident":12,"statu":[0,2,4,5,8,9,11,12,14],"stderr":12,"stdin":[5,12],"stdio":13,"stdout":[0,5,12],"steel":14,"stem":10,"step":[0,2,3,14],"stewardship":14,"still":[0,2,5,7,9,11,12,14],"stock":0,"stone":14,"stop":[8,13,14],"stopbit":[0,5,12],"storag":[2,5,9,11,12,14],"store":[0,4,8,9,11,12],"store_tru":0,"storm":14,"str":0,"straightforward":5,"strang":14,"stranger":14,"strangl":14,"strateg":7,"strategi":[4,5,8],"stream":[0,8,9,11,12,14],"stream_id":[0,8],"street":14,"strength":[8,13,14],"strict":14,"strictli":[5,11],"string":[0,8,14],"stringmessag":0,"strip":14,"strong":[2,11,14],"stronger":2,"strongli":2,"struct":0,"structur":[0,7,8,11,12,13,14],"style":5,"sub":[0,5],"subclass":[0,8],"subinterfac":5,"subject":[2,6,12,13,14],"sublicens":6,"subnet":[2,7],"subscrib":[2,12,14],"subsequ":[0,11],"subset":5,"subsid":5,"substanti":6,"substrat":14,"subtl":14,"subtli":14,"succe":[2,12],"succeed":[0,8],"succesfulli":7,"success":[2,5],"successful":8,"successfulli":[0,8,11],"suddenli":14,"sudo":[2,12],"suffer":7,"suffic":11,"suffici":[2,5,11,12,13],"suffix":0,"suit":[2,3,9,11,12,14],"suitabl":[0,2,5,7,11,12,13],"sum":14,"super":0,"supersed":5,"suppli":[0,5,8,11,12,13],"supplier":2,"support":[0,2,4,5,7,8,9,11,12,13],"sure":[0,2,3,12],"surfac":14,"surround":14,"surveil":[11,14],"surviv":[2,11,12,14],"sustain":14,"switch":[3,5,7,11,12,14],"sx1262":3,"sx1268":3,"sx1276":3,"sx1278":3,"sx1280":3,"sy":0,"symlink":12,"symmetr":[8,11],"synchron":[9,14],"syntax":12,"synthet":14,"system":[0,2,3,4,5,6,7,8,9,10,11,13],"systemctl":12,"systemd":12,"t":[0,2,5,7,8,11,12,14],"tabl":[2,5,7,11,12,14],"tablet":2,"tackl":9,"tag":[8,12],"tail":5,"tailor":11,"take":[0,2,5,9,11,12,13,14],"taken":[0,11,12,14],"talk":[9,14],"tamper":14,"tangerin":0,"tap":[3,14],"target":[0,2,5,9,12,14],"target_hash":8,"target_host":5,"target_port":[5,12],"task":12,"taught":14,"tcp":[2,3,4,7,11,12,13,14],"tcpclientinterfac":[2,3,5],"tcpinterfac":12,"tcpserverinterfac":[2,5],"tdata":0,"teach":[12,14],"teahous":10,"teardown":[0,8],"teardown_reason":0,"tech":14,"technician":14,"technologi":[2,7,14],"teffect":0,"telco":14,"telecom":14,"telemetri":[9,10],"telephon":4,"telephoni":9,"televis":14,"tell":[0,2,5,7,14],"temperatur":11,"templat":12,"temporari":[2,5,12],"temporarili":[5,7],"ten":11,"tenanc":14,"tenant":14,"tend":5,"tenuou":14,"term":[2,5,7,11,14],"termin":[0,2,8,9,12],"terminologi":[7,11],"termux":2,"terrifi":14,"test":[2,9,11,12,14],"testnet":12,"tether":14,"text":[0,9,11,12],"textur":14,"tfile":0,"tgz":12,"than":[0,2,5,7,8,9,10,11,12,13,14],"thank":12,"thei":[0,2,5,7,8,9,11,12,14],"them":[0,2,3,5,7,9,10,11,12,13,14],"theme":12,"themselv":[5,7,12],"theori":14,"thereaft":11,"therefor":[2,11,13,14],"thi":[0,2,3,4,5,6,7,8,9,10,11,12,13,14],"thing":[0,2,7,9],"think":[2,3,7,10,11,14],"those":[2,7,11,12,14],"though":[2,5,7,11],"thought":14,"thousand":[2,5,11,12,14],"thread":0,"threat":12,"three":[2,11,14],"threshold":5,"throough":5,"throttl":[5,7],"through":[0,2,3,4,5,7,8,9,11,12,13],"throughout":[7,11],"throughput":[8,9,11,13],"thrown":[8,14],"thu":[7,8,11],"ti":[0,7,11],"tighten":14,"tightrop":14,"tild":12,"time":[0,2,3,4,5,7,8,9,10,11,12],"time_since_last":0,"timeout":[0,8,12,14],"timeoutarg":0,"timestamp":[0,11,14],"timestr":0,"tion":5,"tl":14,"tmp":12,"tnc":[3,5,8,9,12,13],"to_fil":8,"todai":[11,14],"togeth":[3,7,11,12,14],"toggl":12,"token":[8,11,13],"tokyo":14,"told":14,"toler":5,"tomorrow":14,"too":[0,7,14],"tool":[2,3,4,7,9,11,12,13],"toolkit":[2,7],"top":[9,11,12,14],"topic":[2,11],"topographi":[2,7,11,14],"topologi":[2,5,7,11,13,14],"torn":[8,12],"tort":6,"tortur":14,"total":[8,11,12,13],"total_s":0,"touch":14,"toward":[0,5,11],"tower":14,"track":[8,12,14],"track_phy_stat":8,"trade":[7,11],"tradit":[7,11,14],"traffic":[0,2,5,7,8,11,12,14],"train":[6,14],"transceiv":[2,3,5,9,11,13],"transfer":[0,8,11,12,13],"transfer_s":0,"transform":13,"transient":14,"transistor":14,"translat":7,"transmiss":[2,5,8,11,14],"transmit":[0,5,11,14],"transmitt":14,"transpar":[3,5,7,11,12],"transport":[0,2,4,5,8,9,12,13,14],"transport_en":8,"transport_ident":12,"travel":14,"travers":[2,8,11,14],"treat":[7,11,14],"tree":12,"tremend":7,"tri":0,"trip":[0,8,12],"trivial":[11,13],"troubl":14,"true":[0,2,5,8,12,14],"truli":[3,11,14],"truncat":[8,11,12],"truncated_hash":8,"truncated_hashlength":[0,8],"trust":[2,4,5,7,11,12],"trustless":[4,11,13],"trustworthi":[7,12],"try":[0,4,5,7,8,9],"ttime":0,"ttransfer":0,"ttyacm0":5,"ttyusb0":[0,5,12],"ttyusb1":5,"ttyusb2":5,"tun":[3,5],"tun0":5,"tune":5,"tunnel":[2,5,7,11,13,14],"tupl":8,"turn":[0,5,12,14],"turnaround":5,"tutori":2,"two":[0,3,5,7,8,11,12],"tx":[5,12],"txb":0,"txp":12,"txpower":5,"txt":12,"txtail":[5,12],"type":[0,2,4,5,7,8,12],"typeerror":8,"typic":[5,7,11,12],"tyrant":14,"u":[11,12,14],"ubiqu":3,"ubuntu":[4,12],"uci":2,"udp":[4,7,11,12,13],"udpinterfac":5,"uhf":[12,13],"ui":[9,14],"ultim":[2,11,14],"umsgpack":0,"unblackhol":12,"unblock":12,"unbound":14,"uncar":14,"uncencrypt":0,"uncentraliz":4,"unchang":7,"uncoordin":[2,14],"under":[8,10,11,12,13,14],"underli":[0,5,7,8,11,13],"undermin":14,"underneath":14,"undersea":14,"understand":[2,4,5,7,8,12,13,14],"understood":14,"underwai":2,"underwear":14,"unencrypt":[0,8,11],"unequivoc":11,"unexplor":7,"unforg":[7,13],"unfortun":2,"unicod":12,"unicode_icon":12,"unidentifi":0,"unidirect":0,"unifi":[7,11],"uninterest":0,"uniqu":[0,5,7,8,9,11,12,13,14],"unit":[0,2,8,12],"univers":14,"unknown":[0,5,7,8,11,12],"unlearn":14,"unless":[0,2,5,7,8,11],"unlicens":11,"unlik":11,"unlock":12,"unorganis":7,"unpack":[0,8],"unpackb":0,"unpaid":14,"unplug":[12,14],"unrecover":[0,12],"unreli":5,"unset":11,"unsupport":8,"until":[0,2,5,8],"untrust":12,"untrustworthi":14,"unus":12,"unwant":[11,12],"up":[0,2,3,5,7,8,9,11,12,13,14],"updat":[0,2,8,11,12,14],"upgrad":[2,8,11],"upkeep":5,"upon":[0,5,11],"upset":0,"upstream":12,"uptim":14,"urandom":[11,13],"urgent":14,"uri":9,"url":[12,14],"us":[0,3,4,5,6,7,8,14],"usabl":[5,11],"usag":[4,5,8,9,10,12],"usb":[3,11,12],"useabl":11,"useless":14,"user":[0,2,5,7,9,11,12,13,14],"user_input":0,"userland":13,"usernam":14,"usernameher":12,"usr":[5,12],"usual":[2,5,7],"utf":0,"util":[0,3,4,5,11,14],"utilis":[0,2,5,8,11,12,13],"ux":9,"v":[4,12],"valid":[0,2,5,7,8,11,12,14],"valu":[0,2,5,8,11,12,14],"valuabl":[3,10,14],"valueerror":[0,8],"vanish":14,"vanishingli":14,"var":12,"vari":[2,5,11,12],"variabl":[0,2,8,12],"varieti":[5,9,11,12,13],"variou":[0,2,5,7,9,11,12,13],"vast":[2,11,14],"vastli":7,"ve":7,"vehicl":5,"vendor":[0,3,13],"ventur":14,"verbos":[8,12],"veri":[2,3,5,7,8,9,10,11,12,13,14],"verif":[7,8,9,11,12,14],"verifi":[0,2,5,7,8,11,12,13,14],"versa":13,"version":[0,2,8,11,12,14],"vhf":[11,13],"via":[2,3,5,7,9,10,11,12,13,14],"viabl":7,"vice":13,"video":14,"view":[2,5,10,11,12],"violat":5,"virtual":[2,3,5,7,11,12,13],"virtuou":14,"visibl":[0,5,12],"visual":[12,14],"vital":14,"voic":[9,10,14],"voicemail":9,"volunt":2,"voluntari":2,"vouch":14,"vpn":[7,14],"vport":5,"vulner":7,"vv":12,"vvv":2,"w":12,"wa":[0,3,5,7,8,11,12,13,14],"wai":[0,4,5,7,8,9,11,12,14],"wait":[0,2,5,9,11,12,14],"walk":14,"wall":14,"wander":14,"want":[0,2,5,7,9,10,11,12,14],"wantedbi":12,"warn":12,"warrant":13,"warranti":6,"wash":14,"wast":[5,7,10,14],"wave":[3,14],"wb":0,"we":[0,2,3,5,7,10,11,14],"weaken":11,"weapon":14,"wear":14,"weather":14,"weav":14,"web":[2,9,14],"websit":[2,5,14],"weigh":14,"weight":[12,14],"well":[3,5,7,8,9,10,11,12,13,14],"went":0,"were":[0,9,14],"what":[0,2,4,5,7,8,11,12,14],"whatev":[7,8,11],"wheel":2,"when":[0,2,3,5,7,8,9,11,12,14],"whenev":[0,8,11],"where":[2,3,4,5,7,8,9,11,12,14],"whereupon":11,"wherev":14,"whether":[0,2,5,6,7,8,11,14],"which":[0,2,5,6,7,8,9,11,12,13,14],"while":[0,2,3,5,7,8,9,11,12,13,14],"whim":14,"whitelist":11,"whl":2,"who":[2,5,7,11,12,14],"whole":[12,14],"whom":[6,14],"whose":[12,14],"why":14,"wide":[2,3,5,7,9,11,12,13],"wider":[2,5,7,11,12],"wifi":[2,4,5,7,9,11,12,13,14],"wikipedia":9,"wild":[12,14],"wildcard":0,"wilder":14,"willing":12,"window":[4,5,9,12],"windowsil":14,"wipe":12,"wire":[3,4,5,9,13,14],"wireless":[3,7],"wirelessli":5,"wish":[0,5,11,12,14],"within":[0,2,5,7,8,11,12,14],"without":[0,2,3,5,6,7,9,11,12,13,14],"wlan0":5,"wolf":3,"won":0,"word":[2,14],"work":[2,3,4,5,7,9,11,12,13],"workabl":7,"world":[2,3,5,7,9,12,13,14],"worri":7,"worth":2,"would":[5,8,9,11,12,14],"wrap":12,"write":[0,2,3,5,8,9,11,12,14],"write_timeout":0,"writer":[0,8],"written":[0,11,13,14],"wrong":[0,2,5,14],"wrote":[0,5],"x":[8,11,12],"x25519":[11,13],"xenon":0,"xonxoff":0,"y":0,"ye":[2,5,11,12,14],"year":[11,14],"yet":[0,5,11,14],"yggdrasil":5,"yi":0,"you":[0,2,3,4,5,7,8,9,10,11,12,13,14],"your":[0,3,4,5,7,8,10,11,13,14],"yourself":[2,11,12,13,14],"z":0,"zen":[4,13],"zero":[4,5,8,9,13],"zi":0,"zim":9,"zone":11,"zshrc":2},"titles":["Code Examples","An Explanation of Reticulum for Human Beings","Getting Started Fast","Communications Hardware","Reticulum Network Stack Manual","Configuring Interfaces","Reticulum License","Building Networks","API Reference","Programs Using Reticulum","Support Reticulum","Understanding Reticulum","Using Reticulum on Your System","What is Reticulum?","Zen of Reticulum"],"titleterms":{"0":3,"1":3,"25":5,"A":14,"Beings":1,"For":14,"In":14,"Not":[7,14],"Of":[4,14],"Or":14,"The":[11,12,14],"To":14,"With":2,"abil":14,"access":11,"ad":2,"address":[7,14],"agenc":14,"an":1,"anchor":14,"android":2,"announc":[0,5,11,14],"api":8,"architectur":14,"arm64":2,"auto":5,"autom":12,"ax":5,"backbon":[2,5],"bandwidth":14,"base":[2,3],"basic":11,"beam":3,"blackhol":12,"board":3,"bookworm":2,"bootstrap":2,"broadcast":0,"buffer":0,"build":[2,7],"byte":14,"can":13,"carrier":14,"center":14,"channel":0,"chat":9,"client":[5,9],"cloud":14,"code":[0,11],"columba":9,"combin":3,"common":5,"commun":3,"concept":7,"conceptu":11,"configur":[5,12],"connect":[2,5,7,9],"consider":[5,7],"content":4,"contribut":2,"control":5,"cost":14,"creat":[2,3,11],"cryptograph":11,"current":[11,13],"custom":[0,2,5],"data":12,"death":14,"debian":2,"decentr":14,"deck":3,"depend":2,"design":14,"destin":[5,7,11],"detail":11,"develop":2,"devic":[3,13],"disconnect":14,"discov":12,"discover":5,"discoveri":5,"distribut":2,"doe":13,"domain":14,"donat":10,"echo":[0,3],"emerg":14,"enabl":5,"encrypt":14,"entrypoint":2,"environ":14,"establish":11,"ethernet":3,"ethic":14,"exampl":[0,5],"exist":14,"explan":1,"fabric":14,"fallaci":14,"fast":2,"featur":14,"feedback":10,"filesync":9,"filetransf":0,"find":2,"finish":14,"fix":12,"flow":14,"format":11,"forward":14,"from":14,"function":11,"further":11,"futur":11,"get":[2,11],"global":2,"goal":11,"grade":14,"hardwar":3,"harm":14,"health":2,"heltec":3,"heterogen":7,"host":2,"hostil":14,"human":[1,14],"i":[13,14],"i2p":5,"ident":[11,14],"identif":0,"illus":14,"implement":13,"implic":11,"improv":12,"includ":[2,12],"independ":14,"indic":4,"infrastructur":[2,14],"instal":[2,3],"instanc":[2,7],"interact":9,"interfac":[0,2,5,9,11,12,13,14],"internet":2,"introduct":11,"introductori":7,"ip":14,"issu":2,"j":9,"kei":11,"kiss":5,"liber":14,"licens":6,"lilygo":3,"limit":[5,14],"line":3,"link":[0,11],"list":12,"listen":5,"local":12,"lora":5,"lora32":3,"lunar":2,"lxmf":9,"lxmfy":9,"lxst":9,"maco":2,"manag":12,"manual":4,"mechan":11,"medium":14,"merit":14,"meshchat":9,"meshchatx":9,"micron":9,"minim":0,"mix":2,"mode":5,"modem":3,"modul":9,"motiv":11,"multi":5,"name":[11,12,14],"network":[2,4,7,9,11],"new":5,"node":[7,9,11,14],"nomad":[9,14],"note":2,"offer":13,"open":14,"opencom":3,"openwrt":2,"option":5,"over":2,"overview":[7,11],"packet":[3,11],"page":9,"paramet":5,"parser":9,"pattern":14,"person":[2,14],"phone":9,"physic":14,"pi":2,"pipe":5,"platform":2,"port":12,"portabl":14,"post":14,"power":14,"presenc":14,"preserv":14,"primit":11,"principl":14,"prioritis":11,"program":[2,9,12],"propag":11,"protocol":[9,11,14],"provid":10,"public":[2,11,14],"publish":12,"pure":2,"python":2,"radio":[2,3],"rak4631":3,"raspberri":2,"rate":5,"rbrowser":9,"reach":11,"refer":[8,11,13],"relai":9,"remot":[5,9,12],"request":0,"resolv":2,"resourc":[9,11],"respons":[0,2],"ret":2,"retibb":9,"reticulum":[1,2,3,4,6,9,10,11,12,13,14],"retipedia":9,"risc":2,"rn":9,"rncp":12,"rngit":12,"rnid":12,"rnmon":9,"rnode":[3,5],"rnodeconf":12,"rnpath":12,"rnprobe":12,"rnsd":12,"rnsh":12,"rnstatu":12,"rnx":12,"roam":14,"rrc":9,"rule":11,"scarciti":14,"secur":5,"serial":[3,5,12],"server":5,"servic":12,"setup":11,"shell":9,"sideband":9,"sky":14,"sourc":12,"sovereignti":14,"specif":[2,11],"stack":4,"standalon":2,"start":2,"statu":13,"store":14,"strategi":2,"support":[3,10],"suprem":3,"system":[12,14],"systemwid":12,"t":3,"t114":3,"t3s3":3,"tabl":4,"tcp":5,"telephon":9,"through":14,"time":14,"tool":14,"transport":[7,11],"trust":14,"trustless":7,"try":2,"type":[3,11,13],"ubuntu":2,"udp":5,"uncentraliz":14,"understand":11,"unsign":3,"us":[2,9,11,12,13],"usag":[3,11],"userspac":12,"util":[2,9,12],"v":2,"v1":3,"v2":3,"v3":3,"v4":3,"wai":2,"what":13,"where":13,"wifi":3,"window":2,"wire":11,"work":14,"x":3,"xl":3,"your":[2,12],"zen":14,"zero":14}})
\ No newline at end of file
+Search.setIndex({"alltitles":{"A Carrier-Grade Fallacy":[[15,"a-carrier-grade-fallacy"]],"API Reference":[[9,null]],"ARM64":[[2,"arm64"]],"AX.25 KISS Interface":[[6,"ax-25-kiss-interface"]],"Adding Radio Interfaces":[[2,"adding-radio-interfaces"]],"An Explanation of Reticulum for Human Beings":[[1,null]],"Anchor In The Flow":[[15,"anchor-in-the-flow"]],"Android":[[2,"android"]],"Announce":[[0,"announce"]],"Announce Propagation Rules":[[12,"announce-propagation-rules"]],"Announce Rate Control":[[6,"announce-rate-control"]],"Announcing Presence":[[15,"announcing-presence"]],"Auto Interface":[[6,"auto-interface"]],"Automated List Sourcing":[[13,"automated-list-sourcing"]],"Backbone Interface":[[6,"backbone-interface"]],"Blackhole Management":[[13,"blackhole-management"]],"Bootstrapping Connectivity":[[2,"bootstrapping-connectivity"]],"Broadcast":[[0,"broadcast"]],"Buffer":[[0,"buffer"]],"Build Personal Infrastructure":[[2,"build-personal-infrastructure"]],"Building Networks":[[8,null]],"Channel":[[0,"channel"]],"Code Examples":[[0,null]],"Columba":[[10,"columba"]],"Combining Hardware Types":[[4,"combining-hardware-types"]],"Common Interface Options":[[6,"common-interface-options"]],"Communications Hardware":[[4,null]],"Concepts & Overview":[[8,"concepts-overview"]],"Conceptual Overview":[[12,"conceptual-overview"]],"Configuration & Data":[[13,"configuration-data"]],"Configuring Interfaces":[[6,null]],"Connect to the Distributed Backbone":[[2,"connect-to-the-distributed-backbone"]],"Connecting Remotes":[[6,"connecting-remotes"]],"Connecting Reticulum Instances Over the Internet":[[2,"connecting-reticulum-instances-over-the-internet"]],"Contributing to the Global Ret":[[2,"contributing-to-the-global-ret"]],"Cost Of A Byte":[[15,"cost-of-a-byte"]],"Creating RNodes":[[4,"creating-rnodes"]],"Creating a Network With Reticulum":[[2,"creating-a-network-with-reticulum"]],"Creating and Using Custom Interfaces":[[2,"creating-and-using-custom-interfaces"]],"Creating and Using a Network Identity":[[12,"creating-and-using-a-network-identity"]],"Cryptographic Primitives":[[12,"cryptographic-primitives"]],"Current Status":[[14,"current-status"]],"Current Usage":[[12,"current-usage"]],"Custom Interfaces":[[0,"custom-interfaces"],[6,"custom-interfaces"]],"Customizing Templates":[[3,"customizing-templates"]],"Death To The Address":[[15,"death-to-the-address"]],"Debian Bookworm":[[2,"debian-bookworm"]],"Decentralization Or Uncentralizability?":[[15,"decentralization-or-uncentralizability"]],"Design Patterns For Post-IP Systems":[[15,"design-patterns-for-post-ip-systems"]],"Destination Naming":[[12,"destination-naming"]],"Destinations":[[12,"destinations"]],"Destinations, Not Addresses":[[8,"destinations-not-addresses"]],"Develop a Program with Reticulum":[[2,"develop-a-program-with-reticulum"]],"Discoverable Interfaces":[[6,"discoverable-interfaces"]],"Discovering Interfaces":[[13,"discovering-interfaces"]],"Discovery Parameters":[[6,"discovery-parameters"]],"Donations":[[11,"donations"]],"Echo":[[0,"echo"]],"Emergent Patterns":[[15,"emergent-patterns"]],"Enabling Discovery":[[6,"enabling-discovery"]],"Encryption Is Not A Feature":[[15,"encryption-is-not-a-feature"]],"Ethernet-based Hardware":[[4,"ethernet-based-hardware"]],"Ethics Of The Tool":[[15,"ethics-of-the-tool"]],"Example Configuration":[[6,"example-configuration"]],"Fabric Of The Independent":[[15,"fabric-of-the-independent"]],"Fallacy Of The Cloud":[[15,"fallacy-of-the-cloud"]],"Filetransfer":[[0,"filetransfer"]],"Finding Your Way":[[2,"finding-your-way"]],"Fixed Serial Port Names":[[13,"fixed-serial-port-names"]],"Flow & Time":[[15,"flow-time"]],"Formatting & Syntax Highlighting":[[3,"formatting-syntax-highlighting"]],"Future Implications":[[12,"future-implications"]],"Getting Further":[[12,"getting-further"]],"Getting Started Fast":[[2,null]],"Goals":[[12,"goals"]],"Heltec LoRa32 v2.0":[[4,"heltec-lora32-v2-0"]],"Heltec LoRa32 v3.0":[[4,"heltec-lora32-v3-0"]],"Heltec LoRa32 v4.0":[[4,"heltec-lora32-v4-0"]],"Heltec T114":[[4,"heltec-t114"]],"Heterogeneous Connectivity":[[8,"heterogeneous-connectivity"]],"Hostile Environments":[[15,"hostile-environments"]],"Hosting Public Entrypoints":[[2,"hosting-public-entrypoints"]],"I2P Interface":[[6,"i2p-interface"]],"Identification":[[0,"example-identify"]],"Identities":[[12,"understanding-identities"]],"Identity and Nomadism":[[15,"identity-and-nomadism"]],"Improving System Configuration":[[13,"improving-system-configuration"]],"Included Utility Programs":[[13,"included-utility-programs"]],"Indices and Tables":[[5,"indices-and-tables"]],"Installation":[[4,"installation"]],"Interface Access Codes":[[12,"interface-access-codes"]],"Interface Modes":[[6,"interface-modes"],[6,"interfaces-modes"]],"Interface Modules & Connectivity Resources":[[10,"interface-modules-connectivity-resources"]],"Interface Types and Devices":[[14,"interface-types-and-devices"]],"Introduction & Basic Functionality":[[12,"introduction-basic-functionality"]],"Introductory Considerations":[[8,"introductory-considerations"]],"KISS Interface":[[6,"kiss-interface"]],"LXMF":[[10,"lxmf"]],"LXMF Interactive Client":[[10,"lxmf-interactive-client"]],"LXMFy":[[10,"lxmfy"]],"LXST":[[10,"id17"]],"LXST Phone":[[10,"lxst-phone"]],"Liberation From Limits":[[15,"liberation-from-limits"]],"LilyGO LoRa32 v1.0":[[4,"lilygo-lora32-v1-0"]],"LilyGO LoRa32 v2.0":[[4,"lilygo-lora32-v2-0"]],"LilyGO LoRa32 v2.1":[[4,"lilygo-lora32-v2-1"]],"LilyGO T-Beam":[[4,"lilygo-t-beam"]],"LilyGO T-Beam Supreme":[[4,"lilygo-t-beam-supreme"]],"LilyGO T-Deck":[[4,"lilygo-t-deck"]],"LilyGO T-Echo":[[4,"lilygo-t-echo"]],"LilyGO T3S3":[[4,"lilygo-t3s3"]],"Link":[[0,"link"]],"Link Establishment in Detail":[[12,"link-establishment-in-detail"]],"Listeners":[[6,"listeners"]],"Local Blackhole Management":[[13,"local-blackhole-management"]],"MacOS":[[2,"macos"]],"Merits Of Scarcity":[[15,"merits-of-scarcity"]],"MeshChat":[[10,"meshchat"]],"MeshChatX":[[10,"meshchatx"]],"Micron Parser JS":[[10,"micron-parser-js"]],"Minimal":[[0,"minimal"]],"Mixing Strategies":[[2,"mixing-strategies"]],"Motivation":[[12,"motivation"]],"Naming Is Power":[[15,"naming-is-power"]],"Network Health & Responsibility":[[2,"network-health-responsibility"]],"Network Identities":[[12,"network-identities"]],"New Destination Rate Limiting":[[6,"new-destination-rate-limiting"]],"Node Types":[[12,"node-types"]],"Nomad Network":[[10,"nomad-network"]],"Open Sky":[[15,"open-sky"]],"OpenCom XL":[[4,"opencom-xl"]],"OpenWRT":[[2,"openwrt"]],"Packet Prioritisation":[[12,"packet-prioritisation"]],"Packet Radio Modems":[[4,"packet-radio-modems"]],"Personal Infrastructure":[[15,"personal-infrastructure"]],"Physics Of Trust":[[15,"physics-of-trust"]],"Pipe Interface":[[6,"pipe-interface"]],"Platform-Specific Install Notes":[[2,"platform-specific-install-notes"]],"Portable Existence":[[15,"portable-existence"]],"Preserving Human Agency":[[15,"preserving-human-agency"]],"Programs & Utilities":[[10,"programs-utilities"]],"Programs Using Reticulum":[[10,null]],"Protocol Specifics":[[12,"protocol-specifics"]],"Protocols":[[10,"protocols"]],"Provide Feedback":[[11,"provide-feedback"]],"Public Domain Protocol":[[15,"public-domain-protocol"]],"Public Key Announcements":[[12,"public-key-announcements"]],"Publishing Blackhole Lists":[[13,"publishing-blackhole-lists"]],"Pure-Python Reticulum":[[2,"pure-python-reticulum"]],"RAK4631-based Boards":[[4,"rak4631-based-boards"]],"RBrowser":[[10,"rbrowser"]],"RISC-V":[[2,"risc-v"]],"RNMon":[[10,"rnmon"]],"RNS FileSync":[[10,"rns-filesync"]],"RNS Page Node":[[10,"rns-page-node"]],"RNode":[[4,"rnode"]],"RNode LoRa Interface":[[6,"rnode-lora-interface"]],"RNode Multi Interface":[[6,"rnode-multi-interface"]],"RRC":[[10,"rrc"]],"Raspberry Pi":[[2,"raspberry-pi"]],"Reaching the Destination":[[12,"reaching-the-destination"]],"Reference Implementation":[[14,"reference-implementation"]],"Reference Setup":[[12,"reference-setup"]],"Release Management":[[3,"release-management"]],"Remote Management":[[13,"remote-management"]],"Remote Shell":[[10,"remote-shell"]],"Repository Structure":[[3,"repository-structure"]],"Requests & Responses":[[0,"requests-responses"]],"Resolving Dependency & Installation Issues":[[2,"resolving-dependency-installation-issues"]],"Resources":[[12,"resources"]],"RetiBBS":[[10,"retibbs"]],"Reticulum License":[[7,null]],"Reticulum Network Stack Manual":[[5,null]],"Reticulum Network Telephone":[[10,"reticulum-network-telephone"]],"Reticulum Relay Chat":[[10,"reticulum-relay-chat"]],"Reticulum Transport":[[12,"reticulum-transport"]],"Reticulum as a System Service":[[13,"reticulum-as-a-system-service"]],"Retipedia":[[10,"retipedia"]],"Roaming Nodes":[[15,"roaming-nodes"]],"Security Considerations":[[6,"security-considerations"]],"Serial Interface":[[6,"serial-interface"]],"Serial Lines & Devices":[[4,"serial-lines-devices"]],"Serving Pages Over Nomad Network":[[3,"serving-pages-over-nomad-network"]],"Sideband":[[10,"sideband"]],"Sovereignty Through Infrastructure":[[15,"sovereignty-through-infrastructure"]],"Standalone Reticulum Installation":[[2,"standalone-reticulum-installation"]],"Store & Forward":[[15,"store-forward"]],"Support Reticulum":[[11,null]],"Supported Boards and Devices":[[4,"supported-boards-and-devices"]],"Systemwide Service":[[13,"systemwide-service"]],"TCP Client Interface":[[6,"tcp-client-interface"]],"TCP Server Interface":[[6,"tcp-server-interface"]],"Table Of Contents":[[5,"table-of-contents"]],"The Ability To Disconnect":[[15,"the-ability-to-disconnect"]],"The Announce Mechanism in Detail":[[12,"the-announce-mechanism-in-detail"]],"The Bandwidth Fallacy":[[15,"the-bandwidth-fallacy"]],"The Harm Principle":[[15,"the-harm-principle"]],"The Illusion Of The Center":[[15,"the-illusion-of-the-center"]],"The Interface Is The Medium":[[15,"the-interface-is-the-medium"]],"The Work Is Finished":[[15,"the-work-is-finished"]],"The rncp Utility":[[13,"the-rncp-utility"]],"The rngit Utility":[[3,"the-rngit-utility"],[13,"the-rngit-utility"]],"The rnid Utility":[[13,"the-rnid-utility"]],"The rnodeconf Utility":[[13,"the-rnodeconf-utility"]],"The rnpath Utility":[[13,"the-rnpath-utility"]],"The rnprobe Utility":[[13,"the-rnprobe-utility"]],"The rnsd Utility":[[13,"the-rnsd-utility"]],"The rnsh Utility":[[13,"the-rnsh-utility"]],"The rnstatus Utility":[[13,"the-rnstatus-utility"]],"The rnx Utility":[[13,"the-rnx-utility"]],"Transport Nodes and Instances":[[8,"transport-nodes-and-instances"]],"Trustless Networking":[[8,"trustless-networking"]],"Try Using a Reticulum-based Program":[[2,"try-using-a-reticulum-based-program"]],"UDP Interface":[[6,"udp-interface"]],"Ubuntu Lunar":[[2,"ubuntu-lunar"]],"Understanding Reticulum":[[12,null]],"Unsigned RNode v2.x":[[4,"unsigned-rnode-v2-x"]],"Usage with Reticulum":[[4,"usage-with-reticulum"]],"Userspace Service":[[13,"userspace-service"]],"Using Git Over Reticulum":[[3,null]],"Using Reticulum on Your System":[[13,null]],"Using the Included Utilities":[[2,"using-the-included-utilities"]],"What does Reticulum Offer?":[[14,"what-does-reticulum-offer"]],"What is Reticulum?":[[14,null]],"Where can Reticulum be Used?":[[14,"where-can-reticulum-be-used"]],"WiFi-based Hardware":[[4,"wifi-based-hardware"]],"Windows":[[2,"windows"]],"Wire Format":[[12,"wire-format"]],"Zen of Reticulum":[[15,null]],"Zero-Trust Architectures":[[15,"zero-trust-architectures"]]},"docnames":["examples","forhumans","gettingstartedfast","git","hardware","index","interfaces","license","networks","reference","software","support","understanding","using","whatis","zen"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["examples.rst","forhumans.rst","gettingstartedfast.rst","git.rst","hardware.rst","index.rst","interfaces.rst","license.rst","networks.rst","reference.rst","software.rst","support.rst","understanding.rst","using.rst","whatis.rst","zen.rst"],"indexentries":{},"objects":{"RNS":[[9,0,1,"","Buffer"],[9,0,1,"","Destination"],[9,0,1,"","Identity"],[9,0,1,"","Link"],[9,0,1,"","MessageBase"],[9,0,1,"","Packet"],[9,0,1,"","PacketReceipt"],[9,0,1,"","RawChannelReader"],[9,0,1,"","RawChannelWriter"],[9,0,1,"","RequestReceipt"],[9,0,1,"","Resource"],[9,0,1,"","Reticulum"],[9,0,1,"","Transport"]],"RNS.Buffer":[[9,1,1,"","create_bidirectional_buffer"],[9,1,1,"","create_reader"],[9,1,1,"","create_writer"]],"RNS.Channel":[[9,0,1,"","Channel"]],"RNS.Channel.Channel":[[9,1,1,"","add_message_handler"],[9,1,1,"","is_ready_to_send"],[9,2,1,"","mdu"],[9,1,1,"","register_message_type"],[9,1,1,"","remove_message_handler"],[9,1,1,"","send"]],"RNS.Destination":[[9,3,1,"","RATCHET_COUNT"],[9,3,1,"","RATCHET_INTERVAL"],[9,1,1,"","accepts_links"],[9,1,1,"","announce"],[9,1,1,"","app_and_aspects_from_name"],[9,1,1,"","clear_default_app_data"],[9,1,1,"","create_keys"],[9,1,1,"","decrypt"],[9,1,1,"","deregister_request_handler"],[9,1,1,"","enable_ratchets"],[9,1,1,"","encrypt"],[9,1,1,"","enforce_ratchets"],[9,1,1,"","expand_name"],[9,1,1,"","get_private_key"],[9,1,1,"","hash"],[9,1,1,"","hash_from_name_and_identity"],[9,1,1,"","load_private_key"],[9,1,1,"","register_request_handler"],[9,1,1,"","set_default_app_data"],[9,1,1,"","set_link_established_callback"],[9,1,1,"","set_packet_callback"],[9,1,1,"","set_proof_requested_callback"],[9,1,1,"","set_proof_strategy"],[9,1,1,"","set_ratchet_interval"],[9,1,1,"","set_retained_ratchets"],[9,1,1,"","sign"]],"RNS.Identity":[[9,3,1,"","CURVE"],[9,3,1,"","KEYSIZE"],[9,3,1,"","RATCHETSIZE"],[9,3,1,"","RATCHET_EXPIRY"],[9,3,1,"","TRUNCATED_HASHLENGTH"],[9,1,1,"","current_ratchet_id"],[9,1,1,"","decrypt"],[9,1,1,"","encrypt"],[9,1,1,"","from_bytes"],[9,1,1,"","from_file"],[9,1,1,"","full_hash"],[9,1,1,"","get_private_key"],[9,1,1,"","get_public_key"],[9,1,1,"","get_random_hash"],[9,1,1,"","load_private_key"],[9,1,1,"","load_public_key"],[9,1,1,"","recall"],[9,1,1,"","recall_app_data"],[9,1,1,"","sign"],[9,1,1,"","to_file"],[9,1,1,"","truncated_hash"],[9,1,1,"","validate"]],"RNS.Link":[[9,3,1,"","CURVE"],[9,3,1,"","ESTABLISHMENT_TIMEOUT_PER_HOP"],[9,3,1,"","KEEPALIVE"],[9,3,1,"","KEEPALIVE_TIMEOUT_FACTOR"],[9,3,1,"","STALE_GRACE"],[9,3,1,"","STALE_TIME"],[9,1,1,"","get_age"],[9,1,1,"","get_channel"],[9,1,1,"","get_establishment_rate"],[9,1,1,"","get_expected_rate"],[9,1,1,"","get_mdu"],[9,1,1,"","get_mode"],[9,1,1,"","get_mtu"],[9,1,1,"","get_q"],[9,1,1,"","get_remote_identity"],[9,1,1,"","get_rssi"],[9,1,1,"","get_snr"],[9,1,1,"","identify"],[9,1,1,"","inactive_for"],[9,1,1,"","no_data_for"],[9,1,1,"","no_inbound_for"],[9,1,1,"","no_outbound_for"],[9,1,1,"","request"],[9,1,1,"","set_link_closed_callback"],[9,1,1,"","set_packet_callback"],[9,1,1,"","set_remote_identified_callback"],[9,1,1,"","set_resource_callback"],[9,1,1,"","set_resource_concluded_callback"],[9,1,1,"","set_resource_started_callback"],[9,1,1,"","set_resource_strategy"],[9,1,1,"","teardown"],[9,1,1,"","track_phy_stats"]],"RNS.MessageBase":[[9,3,1,"","MSGTYPE"],[9,1,1,"","pack"],[9,1,1,"","unpack"]],"RNS.Packet":[[9,3,1,"","ENCRYPTED_MDU"],[9,3,1,"","PLAIN_MDU"],[9,1,1,"","get_q"],[9,1,1,"","get_rssi"],[9,1,1,"","get_snr"],[9,1,1,"","resend"],[9,1,1,"","send"]],"RNS.PacketReceipt":[[9,1,1,"","get_rtt"],[9,1,1,"","get_status"],[9,1,1,"","set_delivery_callback"],[9,1,1,"","set_timeout"],[9,1,1,"","set_timeout_callback"]],"RNS.RawChannelReader":[[9,1,1,"","__init__"],[9,1,1,"","add_ready_callback"],[9,1,1,"","remove_ready_callback"]],"RNS.RawChannelWriter":[[9,1,1,"","__init__"]],"RNS.RequestReceipt":[[9,1,1,"","concluded"],[9,1,1,"","get_progress"],[9,1,1,"","get_request_id"],[9,1,1,"","get_response"],[9,1,1,"","get_response_time"],[9,1,1,"","get_status"]],"RNS.Resource":[[9,1,1,"","advertise"],[9,1,1,"","cancel"],[9,1,1,"","get_data_size"],[9,1,1,"","get_hash"],[9,1,1,"","get_parts"],[9,1,1,"","get_progress"],[9,1,1,"","get_segments"],[9,1,1,"","get_transfer_size"],[9,1,1,"","is_compressed"]],"RNS.Reticulum":[[9,3,1,"","ANNOUNCE_CAP"],[9,3,1,"","LINK_MTU_DISCOVERY"],[9,3,1,"","MINIMUM_BITRATE"],[9,3,1,"","MTU"],[9,1,1,"","blackhole_sources"],[9,1,1,"","discovered_interfaces"],[9,1,1,"","get_instance"],[9,1,1,"","interface_discovery_sources"],[9,1,1,"","link_mtu_discovery"],[9,1,1,"","publish_blackhole_enabled"],[9,1,1,"","remote_management_enabled"],[9,1,1,"","required_discovery_value"],[9,1,1,"","should_use_implicit_proof"],[9,1,1,"","transport_enabled"]],"RNS.Transport":[[9,3,1,"","PATHFINDER_M"],[9,1,1,"","await_path"],[9,1,1,"","deregister_announce_handler"],[9,1,1,"","has_path"],[9,1,1,"","hops_to"],[9,1,1,"","next_hop"],[9,1,1,"","next_hop_interface"],[9,1,1,"","register_announce_handler"],[9,1,1,"","request_path"]]},"objnames":{"0":["py","class","Python class"],"1":["py","method","Python method"],"2":["py","property","Python property"],"3":["py","attribute","Python attribute"]},"objtypes":{"0":"py:class","1":"py:method","2":"py:property","3":"py:attribute"},"terms":{"":[0,2,3,6,8,12,13,14,15],"0":[0,2,3,6,9,12,13,14],"00":[12,13],"00000000":12,"00000100":12,"00000111":12,"01":[3,12],"01010000":12,"02":2,"03":3,"04":3,"05":[0,3],"0536":13,"06915":6,"08":[0,13],"09":3,"0d7334d411d00120cbad24edf355fdd2":3,"0f4259fef4521ab75a3409e353fe9073eb10783b4912a6a9937c57bf44a62c1":13,"0x0101":0,"0x20":0,"0x7d":0,"0x7e":0,"0x91c421ddfb8a30a49a71d63447ddb54cebe3465":11,"0xf000":[0,9],"1":[0,2,3,6,9,12,13,15],"10":[3,6,12,13],"100":[0,6,12],"1000":0,"10000000":12,"1024":0,"109":15,"11":12,"115":12,"115200":[0,6,13],"1178a8f1fad405bf2ad153bf5036bdfd":13,"118":6,"12":[2,3,6,13],"1200":12,"125":6,"125000":6,"127":6,"128":[8,9,12],"13":13,"13425ec15b621c1d928589718000d814":[8,12],"14":[3,6],"15":[3,6],"150":[6,13],"150m":6,"153cb870b4665b8c1c348896292b0bad":3,"15kb":15,"15m":13,"16":[3,6,8,12,13,15],"1625":6,"1625000":6,"167":12,"168":15,"17":13,"1726dbad538775b5bf9b0ea25a4079c8":13,"18":13,"1800":9,"187":13,"192":15,"1b03013c25f1c2ca068a4f080b844a10":13,"1h":13,"2":[0,2,3,6,9,12,13],"20":[3,6,12,13],"200":[6,13],"201":6,"2016":[7,14],"2023":[2,13],"2024":3,"2025":3,"2026":[3,7,15],"21":2,"22":6,"2225fdeecaf6e2db4556c3c2d7637294":13,"23":[3,13],"2316":13,"23h":13,"24":[6,13],"2400000000":6,"25":[0,5,14],"250":15,"255":[6,13],"25519":9,"256":[3,6,8,9,12,13,14],"2592000":9,"27":13,"29":6,"297":[12,14],"29716":6,"2b489d06eaf7c543808c76a5332a447d":13,"2b9ec651326d9bc274119054c70fb75":13,"2d03725b327348980d570f739a3a5708":13,"2d882c5586e548d79b5af27bca1776dc":13,"2f":0,"2owjajquafianpecac":2,"3":[0,2,3,6,10,12,13,14],"30":[6,9,13],"30602def3b3506a28ed33db6f60cc6c9":13,"32":[2,3,9,12],"3278":6,"327c1b2f87c9353e01769b01090b18f2":15,"32m":13,"33":6,"34":[6,15],"360":[3,6,9],"3600":[0,2,6],"37428":13,"37429":13,"38":13,"383":9,"3865":13,"399ea050ce0eed1816c300bcb0840938":13,"3a4f8b9c1d2e3f4g5h6i7j8k9l0m1n2o":13,"3b87":6,"4":[3,9,12,13],"40m":13,"4242":[2,6],"4251":6,"42671":6,"430":12,"4343":6,"44":14,"44318":6,"45":[0,3,12],"46":13,"464":9,"465":12,"469":13,"48555":6,"49":13,"49555":6,"4965":13,"4e":6,"4faf1b2e0a077e6a9d92fa051f256038":12,"4g":15,"4ghz":6,"5":[0,3,6,9,12,13,14,15],"500":[6,9,12,14,15],"5001":6,"50824b711717f97c2fb1166ceddd5ea9":3,"51":[6,12],"512":[6,9,12,14],"52":13,"521c87a83afb8f29e4455e77930b973b":13,"5245a8efe1788c6a1cd36144a270e13b":13,"53":3,"55":6,"56":13,"564":0,"56m":13,"5757":6,"5858":6,"59":13,"5caf":6,"5d78":6,"5urvjicpzi7q3ybztsef4i5ow2aq4soktfj7zedz53s47r54jnqq":6,"6":[3,6,9,13],"60":[0,6],"600":6,"63":13,"64":[2,12,13],"68a4aa91ac350c4087564e8a69f84e86":13,"7":[2,6,12,13],"71":15,"71e5":6,"72":6,"720":[6,9],"7200":6,"73":[6,13],"73cbd378bb0286ed11a707c13447bb1":13,"74":13,"74195":6,"781":13,"7822":13,"7a55144adf826958a9529a3bcf08b149":13,"8":[0,6,13],"80":[11,13],"8001":6,"809":13,"83":[12,13],"83b7328926fed0d2e6a10a7671f9e237":15,"84fpy1qbxhcgdseepynmhthcrgmx4nffbytz2gkytoqhvvhjp8eaw1z1eedrnkd19b3b8nilcgvxzkv17ummmeescrpya5w":11,"86":13,"865":6,"865600000":6,"867":6,"867200000":6,"868":12,"88":6,"89":6,"8dd57a738226809646089335a6b03695":13,"9":[2,3,9,13],"90":3,"900":[12,13],"9037":13,"921600":13,"941bed5e228775e5a8079fc38b1ccf3f":13,"959e10e5efc1bd9d97a4083babe51dea":3,"96":12,"9600":0,"9710b86":3,"9710b86ba12c42d1d8f30f74fe509286":3,"984b74a3f768bef236af4371e6f248cd":13,"99":12,"99714":6,"9fb6d773498fb3feda407ed8ef2c3229":13,"9h":13,"A":[0,2,3,5,6,7,8,9,10,12,13],"AND":7,"AS":7,"And":[0,15],"As":[2,3,4,6,9,10,11,12,13,14],"At":[2,12],"BE":7,"BUT":7,"Be":[3,9,13,15],"But":[11,12,15],"By":[0,2,3,6,9,12,13,15],"FOR":7,"For":[2,3,5,6,8,9,12,13,14],"IN":[0,7,9],"If":[0,2,3,4,6,8,9,10,11,12,13,14,15],"In":[0,2,3,4,5,6,8,9,10,12,13,14],"It":[0,2,3,4,6,8,9,10,12,13,14,15],"NO":7,"NOT":7,"No":[0,2,6,8,12,13,14,15],"Not":5,"OF":7,"OR":7,"Of":[8,12],"On":[0,2,3,6,8,13,15],"One":[2,4,9,12,15],"Or":[5,6,13,14],"THE":7,"TO":7,"That":[10,12,15],"The":[0,2,4,5,6,7,8,9,10,11,14],"Then":[0,2],"There":[2,8,12,13,15],"These":[2,6,8,9,10,12,13],"To":[0,2,3,4,5,6,8,12,13,14],"WITH":7,"Will":9,"With":[5,6,8,10,12,13,15],"_":12,"__":12,"______":12,"_______":12,"________":12,"________________":12,"__future__":0,"__init__":[0,9],"__main__":0,"__name__":0,"__str__":0,"_no_us":9,"a4d":6,"a79f":6,"aarch64":2,"ab":0,"abil":[2,4,5,7,13,14],"abl":[0,2,3,6,9,12,13],"abolish":15,"abort":[0,6],"about":[0,2,3,4,6,8,9,12,13,15],"abov":[2,4,6,7,12,13],"absolut":[6,11,14,15],"abstract":[8,9,12,15],"abstractmethod":9,"abund":[4,15],"abus":13,"accept":[3,6,9,11,12,13,15],"accept_al":[0,9],"accept_app":9,"accept_non":9,"accepts_link":9,"access":[2,3,5,6,8,9,13,15],"access_point":[6,8],"accid":[10,15],"accommod":[9,12],"accomod":15,"accord":[0,2,8,12],"accordingli":[0,6],"account":[8,15],"achiev":[2,6,8,9,12,14],"acknowledg":[8,14],"across":[0,4,8,9,12,13,15],"act":[2,6,9,12,13,15],"action":[0,7,13],"activ":[0,2,3,6,9,10,12,13],"actor":[12,13,15],"actual":[0,2,6,8,12,13,15],"ad":[0,3,4,5,6,8,9,10,12,13,14,15],"adapt":[2,4,15],"add":[0,2,3,6,8,9,13],"add_argu":0,"add_message_handl":[0,9],"add_ready_callback":9,"addict":15,"addit":[3,4,6,8,9,10,12,13,14],"addition":[2,4,6,12],"addr":13,"address":[0,2,5,6,9,12,13,14],"adher":9,"adjust":[2,3,9,13,15],"admin":6,"administr":[8,10,12,13,15],"adopt":12,"adress":[9,12],"advanc":[10,12],"advantag":9,"advers":14,"adversari":[2,8,11,15],"advertis":[0,6,9],"advic":11,"advis":[6,12],"ae":[9,12,14],"af73":6,"affect":[2,6,15],"affili":10,"afford":8,"after":[0,2,3,6,8,9,12,13],"afterthought":15,"again":[6,12,13],"against":[2,6,12,15],"agenc":[5,12],"agent":[12,15],"agnost":[8,12],"agnostic":[12,15],"ago":13,"agreement":15,"ahead":8,"ai":15,"aim":[2,5,12],"air":[2,4],"airmax":4,"airtim":[6,8,15],"airtime_limit_long":6,"airtime_limit_short":6,"akin":12,"algorithm":[7,8,15],"alic":12,"alien":15,"align":[2,13,15],"aliv":[9,12],"all":[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15],"allevi":4,"alloc":[6,8,9,12,13],"allow":[0,2,3,4,6,8,9,10,12,13,14,15],"allow_al":[0,9],"allow_list":9,"allow_non":9,"allowed_hash":13,"allowed_ident":13,"allowed_list":9,"almost":[4,6,12,13,15],"alon":6,"along":[6,9,12,13],"alongsid":8,"alreadi":[0,2,4,8,9,10,12,13,15],"also":[0,2,3,4,5,6,8,9,10,12,13,14,15],"alter":[2,9,12],"altern":[0,2,3,6,13],"although":[2,12,14],"alwai":[2,6,8,9,12,13,15],"am":15,"amateur":[6,14],"among":15,"amongst":7,"amount":[0,6,8,9,12,14,15],"amsterdam":[6,13],"an":[0,2,3,4,6,7,8,9,10,12,13,14,15],"analog":[10,15],"analyt":11,"anchor":5,"android":[5,6,10,13],"ani":[0,2,3,4,6,7,8,9,10,11,12,13,14],"annot":0,"annouce_cap":6,"announc":[2,3,5,8,9,10,13],"announce_cap":[6,9],"announce_handl":0,"announce_interv":[3,6],"announce_packet_hash":9,"announce_rate_grac":[2,6],"announce_rate_penalti":[2,6],"announce_rate_target":[2,6],"announced_ident":[0,9],"announceloop":0,"announcesampl":0,"anonym":[2,8,9,12,14],"anoth":[3,8,9,12,13,15],"answer":[12,13,15],"antenna":[4,15],"anxieti":15,"anymor":[2,15],"anyon":[0,2,4,6,8,9,10,12,13,15],"anyth":[4,6,10,12,13,14,15],"anywher":[0,6,15],"ap":6,"api":[2,5,12,14,15],"apk":2,"app":[0,2,9,10,12,15],"app_and_aspects_from_nam":9,"app_data":[0,9],"app_nam":[0,9],"app_timeout":0,"appear":15,"append":[0,12,13],"appli":[3,6,9,12,15],"applic":[0,6,8,9,10,12,13,14,15],"appreci":3,"approach":[2,4,8,12,13],"appropri":[6,8,15],"approv":[8,12,15],"approxim":[6,13],"april":2,"apt":2,"ar":[0,2,3,4,6,8,9,10,11,12,13,14,15],"arbit":15,"arbitrari":[9,12,13,14],"arch":[2,15],"architect":[11,15],"architectur":[2,5,10],"archiv":10,"area":[2,4,6,8,12,14],"arg":[0,13],"argon":0,"argpars":0,"argument":[0,3,9,13],"argumentpars":0,"aris":7,"arm64":5,"armi":15,"armor":15,"around":[2,6,12,15],"arrai":2,"arriv":[0,12,15],"art":15,"artifact":3,"artifici":7,"arx":13,"ask":[0,2,4,9,10,15],"aspect":[0,2,4,6,8,9,12,13],"aspect_filt":[0,9],"assert":15,"assign":[0,8,12,13,15],"assist":10,"associ":[3,7,9,12,13],"assum":[6,8,12,15],"assumpt":[8,11,15],"assuredli":15,"asymmetr":[12,13,14],"asynchron":[8,15],"attach":[10,13],"attached_interfac":9,"attack":2,"attain":2,"attempt":[0,2,4,9,13],"attent":[11,15],"attribut":9,"atx":13,"auth":13,"authent":[6,8,9,10,12,13,14],"author":[7,12,13,15],"authoris":13,"authorit":[12,14],"auto":[2,4,5,9,12,13],"auto_compress":9,"autoconfigur":14,"autoconnect_discovered_interfac":[6,13],"autodiscov":6,"autoinstal":[4,13],"autointerfac":[2,4,6,13],"autom":[2,4,5,10,11,12],"automat":[0,2,3,6,8,9,10,12,13,14,15],"autonom":[8,12,15],"autonomi":[14,15],"avail":[0,2,4,5,6,8,9,10,12,13,14,15],"averag":12,"avoid":[4,12,13],"awai":[0,6,12,13,15],"await_path":9,"awar":[2,6,12],"ax":[5,14],"ax25kissinterfac":6,"b":[0,3,13],"b32":6,"back":[0,6,12,14,15],"backbon":[4,5,8,13,15],"backboneinterfac":[2,6,13],"backend":[6,12],"background":[2,6,13],"backhaul":[4,8],"backup":13,"balanc":6,"band":[4,12,15],"bandwidth":[2,5,6,8,9,10,12,13,14],"bar":15,"bare":[0,3,6,15],"barrier":[6,12,15],"base":[3,5,6,8,9,10,12,13,14,15],"base32":[6,13],"base64":13,"bash":[6,13],"basi":[6,9,12,13,14],"basic":[0,2,5,6,8,9,13],"batch":3,"batteri":15,"baud":[6,13],"baud_flash":13,"baudrat":0,"bc1pgqgu8h8xvj4jtafslq396v7ju7hkgymyrzyqft4llfslz5vp99psqfk3a6":11,"bc7291552be7a58f361522990465165c":[13,14],"beacon":6,"beast":15,"beat":15,"beauti":10,"becaus":[8,12,15],"becki":0,"becom":[0,2,6,8,9,12,15],"been":[0,2,3,4,6,8,9,10,11,12,13,14,15],"befor":[0,2,6,8,9,11,12,13,15],"beg":15,"begin":[0,4,9,15],"begun":9,"behalf":[6,8],"behav":[4,10],"behavior":15,"behaviour":[2,6,13],"behind":[2,6,11,12,15],"being":[2,6,9,12,15],"beings":[7,12],"belief":12,"believ":15,"belong":[8,12,13,15],"below":[4,6,13],"bend":15,"benefici":[6,13],"berlin":15,"best":[2,8,12,15],"better":[2,6,8,11,12,15],"between":[0,6,8,9,10,12,13,15],"bi":[9,12],"bidirect":12,"big":15,"bill":15,"billion":[8,12],"billionair":15,"bin":[2,6,13],"binari":[0,2,6,8,9,12,13,15],"bind":6,"bit":[0,2,3,6,8,9,10,12,13,14,15],"bitcoin":11,"bitrat":[0,6,9],"blackhol":[2,5,8,9,12],"blackhole_sourc":[9,13],"blackholed_ident":13,"blackholeupdat":13,"ble":6,"blindli":[13,15],"blob":[0,3,12],"block":[2,3,6,8,9,10,12,13,15],"blockchain":15,"blocklist":13,"blood":15,"blueprint":15,"bluetooth":13,"board":[2,5,6,10,12,14],"boat":15,"bogu":6,"boil":4,"bond":15,"book":15,"bookworm":5,"bool":9,"boot":[2,13],"bootstrap":[5,6,13],"bootstrap_onli":[2,6],"borrow":15,"bot":10,"both":[0,2,3,4,6,8,9,10,12,13,14],"bounc":[2,15],"bound":[8,15],"boundari":[6,8,12],"box":4,"branch":[3,13],"breadcrumb":3,"break":[2,9,12,15],"breath":[2,15],"breviti":13,"bridg":[4,6],"briefli":[4,12],"bring":[6,13],"brittl":[2,15],"broad":[2,4],"broadcast":[2,5,6,8,9,12,13,15],"broadcast_destin":0,"broadcastloop":0,"broader":[2,12],"broken":[2,15],"brought":[6,13],"brows":[3,10,15],"browser":[3,10,15],"buffer":[5,6,9,14],"bufferedread":9,"bufferedrwpair":9,"bufferedwrit":9,"bufferexampl":0,"bug":[3,10,11],"bui":15,"build":[0,3,4,5,6,10,12,14,15],"builder":15,"built":[2,6,8,10,12,13,14,15],"bulletin":10,"bundl":0,"bureaucraci":15,"bureaucrat":[14,15],"burst":6,"button":15,"bw":13,"bypass":[11,15],"byte":[0,5,8,9,12,13,14],"bytes":0,"c":[0,3,7,13],"c50cc4e4f7838b6c31f60ab9032cbc62":13,"c89b4da064bf66d280f0e4d8abfd9806":13,"cabl":[6,15],"cach":[6,8,13],"cafe":15,"cage":15,"calcul":[8,9,12,13],"call":[0,8,9,10,12,14,15],"callabl":[0,9],"callback":[0,9],"callsign":6,"can":[0,2,3,4,5,6,8,9,10,11,12,13,15],"cancel":[3,9],"candid":8,"cannot":[0,2,3,6,8,14,15],"cap":6,"capabl":[0,2,6,8,12],"capac":[2,4,6,8,9,12],"capit":15,"captur":15,"car":8,"carambola":0,"card":15,"care":[2,3,8,9,13,14,15],"carefulli":2,"cargo_build_target":2,"carri":[6,8,9,12,13,14,15],"carrier":[5,8,14],"case":[0,2,3,4,6,8,12,13],"castl":15,"cat":13,"categori":4,"caus":[2,6],"caution":6,"cb":[9,12],"cbc":[12,14],"cdma":6,"ceas":15,"cell":8,"cellular":15,"cement":15,"censor":[12,13,15],"censorship":[12,14],"center":5,"central":[2,4,6,8,10,12,13,15],"centralis":12,"ceo":15,"certain":[0,6,8,11,12,13,15],"certif":15,"chain":[6,15],"challeng":[2,10,12,15],"chanc":4,"chang":[0,2,3,6,9,12,13,14,15],"channel":[2,5,6,8,9,11,12,14,15],"channelarg":0,"channelexampl":0,"chaotic":15,"chapter":[2,4,6,8,9,10,12,13,14],"charact":[0,6,13],"characterist":[6,8,12,15],"charg":7,"chart":3,"charter":12,"chase":15,"chat":5,"cheap":[4,6,12],"cheapli":2,"check":[0,2,9,12,13,15],"checksum":[3,9,14],"choic":[2,8,15],"choke":15,"choos":[0,2,6,10,12,15],"chose":12,"chosen":12,"chunk":0,"cific":6,"ciphertext":9,"ciphertext_token":9,"circl":15,"circumst":[11,12,15],"citi":15,"cl":0,"claim":[7,12],"clariti":15,"class":[0,8,9,14],"clear":[0,6,9,13,15],"clear_default_app_data":9,"clear_screen":0,"clearli":15,"click":3,"client":[0,3,4,5,9,13,15],"client_buffer_readi":0,"client_config":3,"client_connect":0,"client_disconnect":0,"client_ident":0,"client_loop":0,"client_message_receiv":0,"client_packet_receiv":0,"client_request":0,"climat":15,"clone":[3,12],"close":[0,8,9,13],"closed_callback":9,"closer":[10,12],"closest":12,"cloth":15,"cloud":[5,6,10],"cluster":12,"co":[4,6,14],"code":[2,3,4,5,6,8,10,11,13,14,15],"codingr":6,"coexist":8,"coffe":15,"coher":15,"collabor":[3,12,13],"collaps":[2,15],"collect":[2,11],"collis":8,"colon":15,"color":3,"columba":5,"com":[0,11,15],"combin":[2,3,5,10,12,13,15],"combinatori":15,"come":[2,6,8,12,15],"comma":[6,13],"command":[0,2,3,6,10,13],"commend":15,"comment":[3,6,13],"commerci":15,"commit":[2,3,10],"committe":15,"common":[0,2,4,5,8,12,13,14,15],"commonli":[4,6],"commun":[0,2,3,5,6,8,9,10,11,12,13,14,15],"communica":6,"compani":15,"compar":[8,15],"compass":15,"compat":[0,2,3,4,6,9,10,12,13,14],"compet":15,"compil":2,"complain":15,"complet":[0,2,3,4,6,8,9,10,12,13,14],"complex":[2,6,11,12,15],"compli":8,"compon":[4,11,12,15],"compos":[3,12],"comprehens":[10,11],"compress":[0,9,12,13,14],"compromis":[12,15],"comput":[2,6,12,14,15],"computation":[6,13],"concaten":[9,13],"conceiv":[2,4],"concept":[5,12,13,15],"conceptu":5,"concern":15,"concert":12,"conclud":[0,9],"concret":15,"concurr":[4,12,13],"condit":[2,7,12,14,15],"conduit":15,"conf":[2,10],"config":[0,2,3,6,8,13,15],"configarg":0,"configdir":9,"configobj":3,"configpath":0,"configur":[0,2,3,4,5,8,9,12,14],"configuraion":4,"configure_devic":0,"confirm":[8,12,14,15],"conflict":[2,8],"confront":15,"confus":[4,12],"congest":12,"conglomer":15,"conjunct":6,"connect":[0,3,4,5,7,9,11,12,13,14,15],"conscienc":15,"conscript":15,"consequ":[8,12],"conserv":6,"consid":[0,2,6,9,10,12,13,14,15],"consider":[5,12],"consist":[3,12,13],"consol":13,"constant":[9,15],"constantli":[12,15],"constitut":[2,12],"constrain":[8,9],"constraint":15,"construct":[12,14,15],"constructor":0,"consum":[8,9,15],"consumpt":[8,15],"contact":[8,10,12,15],"contain":[0,3,6,8,9,12,13],"contempl":15,"contend":12,"content":[0,2,3,8,10,13],"context":[2,12,13,15],"contin":[0,2,15],"continu":[6,9,11,13,14,15],"contract":7,"contrari":15,"contribut":[5,7,8,11],"control":[0,2,4,5,8,9,10,12,13,14,15],"convei":[0,15],"conveni":[0,13,15],"convent":[0,8],"converg":[2,8,12,15],"convers":[3,10,12,15],"convert":3,"cook":2,"coordin":[6,8,9,12,14,15],"copi":[7,13],"copyright":7,"core":[8,12,13,14,15],"corner":15,"corpor":15,"correct":[0,6,8,12],"correctli":[0,8],"correspond":[8,12,15],"cost":[4,5,6,12,14],"could":[0,2,6,8,9,12,13,14,15],"count":[3,10,12,15],"counter":0,"cours":[2,6,8,10,12,15],"coven":15,"cover":[2,4,8,12,14],"coverag":8,"cpu":[0,6,8,12],"cpuinfo":13,"cr":13,"craft":15,"craftsman":15,"crash":15,"creat":[0,3,5,6,8,9,10,13,14,15],"create_bidirectional_buff":[0,9],"create_kei":9,"create_read":9,"create_receipt":[0,9],"create_writ":9,"creation":[3,7,8,10,12,13,14],"creativ":15,"creator":[12,15],"credenti":[6,12],"critic":[8,12,13],"cross":[6,10],"crowd":15,"crucial":8,"cruft":15,"cryptograph":[2,5,6,8,13,14,15],"cryptographi":[2,12,14],"crystal":15,"ctrl":0,"cull":9,"culmin":15,"curl":6,"current":[0,2,3,5,6,9,10,13,15],"current_download":0,"current_filenam":0,"current_ratchet_id":9,"curv":[8,9,12,14],"curve25519":[8,9,12,14],"custodian":15,"custom":[4,5,9,10,12,14],"custom_network_nam":6,"customis":6,"cut":15,"cynic":15,"d":13,"d56a4fa02c0a77b3575935aedd90bdb2":13,"daemon":[0,2,6,9,10,13],"dai":[3,9,10,15],"daili":3,"damag":[7,15],"danc":15,"danger":15,"dark":15,"data":[0,2,4,5,6,8,9,12,14,15],"data_buff":0,"data_port":6,"databas":[10,13,15],"databit":[0,6,13],"datacent":2,"datar":6,"dataset":[7,15],"date":[0,2,3,13],"datetim":0,"db":[0,13],"dbm":[0,6,13],"deal":[6,7],"death":5,"debian":[5,12,13],"debug":[2,13],"decad":[4,11,15],"decentr":[2,5,6,13],"decentralis":14,"decid":[6,8,9,12,15],"decim":6,"decis":[6,8,12,15],"declar":12,"decod":[0,6,13],"decreas":[3,13],"decrypt":[6,8,9,12,13],"dedic":[3,6,12,14,15],"deep":[2,15],"deepli":15,"def":[0,3],"default":[0,2,3,4,6,8,9,10,12,13],"default_ifac_s":0,"defin":[0,3,6,9,12,13,14,15],"definit":[0,2,12,13,15],"defunct":13,"degrad":8,"degre":6,"delai":[6,10,12,13,15],"deleg":12,"delet":[3,15],"delimit":0,"deliv":[0,2,8,9,10,15],"deliveri":[0,8,9,10,14],"demand":[9,15],"demonstr":[0,2,6,15],"deni":[3,15],"depend":[0,4,5,6,8,9,12,13,15],"deploi":[12,15],"depriorit":15,"depth":15,"deregist":9,"deregister_announce_handl":9,"deregister_request_handl":9,"deriv":[2,8,9,12,14],"describ":[4,6,9,12],"descript":[0,3,13],"descriptor":0,"deseri":0,"deserializ":0,"design":[2,3,4,5,6,8,10,11,12,13,14],"desir":[0,4,6,12],"desk":15,"desktop":[6,10],"dest_len":0,"destin":[0,2,3,5,9,13,15],"destination_1":0,"destination_2":0,"destination_clos":0,"destination_hash":[0,3,9,13],"destination_hexhash":0,"destroi":15,"destruct":15,"detach":6,"detail":[0,2,3,5,6,9,13,14],"detect":0,"determin":[2,8,9,12,15],"detriment":13,"dev":[0,2,6,13],"devel":2,"develop":[3,4,5,7,9,10,11,12,13,14,15],"devic":[0,2,5,6,8,9,10,12,13,15],"dh":9,"dhcp":[4,6,8,13],"di":15,"dict":0,"dictat":[13,15],"dictatorship":15,"dictionari":13,"did":[0,10,15],"diff":3,"differ":[0,2,3,4,6,8,9,10,12,13,14,15],"differenti":13,"diffi":[8,12],"difficult":[2,4,13],"difficulti":[6,13],"digit":[2,4,12,14,15],"digniti":15,"dinner":15,"dir":0,"dire":4,"direct":[0,2,4,8,9,10,12,13],"direction":12,"directli":[2,3,4,6,7,8,9,10,12,13,14,15],"directori":[0,2,3,6,8,13,15],"disabl":[6,12,13],"disappear":[6,13,15],"disassoci":12,"discard":[2,9,12],"disciplin":15,"disconnect":[0,2,5,6],"discov":[2,5,6,8,9,10,12,15],"discover":[2,5,13],"discover_interfac":13,"discovered_interfac":9,"discoveri":[2,5,9,12,13],"discovery_bandwidth":6,"discovery_encrypt":6,"discovery_frequ":6,"discovery_modul":6,"discovery_nam":6,"discovery_port":6,"discovery_scop":6,"discovery_stamp_valu":6,"discrimin":8,"discuss":[4,12],"disk":[0,9,13],"displai":[0,3,6,8,10,12,13],"disrupt":6,"dissolv":[8,15],"dist":3,"distanc":[4,12,13],"distant":[2,9,12],"distinct":[6,8,12,15],"distinguish":[8,12],"distribut":[0,3,5,7,8,9,10,12,13,14,15],"dive":2,"divid":9,"divmod":0,"dn":[4,6,10,15],"dna":15,"dnf":2,"do":[0,2,4,6,7,8,9,12,13,15],"document":[2,3,7,9,10,12,13,14,15],"doe":[0,2,3,4,5,6,9,10,12,13,15],"doesn":[6,8,15],"dollar":15,"domain":[2,5,6,12,13,14],"domin":15,"don":[0,2,8,9,12,13,15],"donat":5,"done":[0,2,6,12,13,15],"door":15,"dot":[12,13],"doubt":2,"dowload":2,"down":[0,4,6,9,13,15],"download":[0,2,3,6,8,10,13],"download_began":0,"download_conclud":0,"download_finish":0,"download_start":0,"download_tim":0,"downstream":13,"draft":3,"drag":10,"drastic":13,"draw":15,"drawn":15,"drive":11,"driver":[13,14],"droid":2,"drone":15,"drop":[3,6,8,9,10,12,13,15],"dsrdtr":0,"dual":[4,13],"dublin":13,"due":0,"dumb":15,"dump":13,"duplex":[12,14],"durat":13,"dure":13,"dynam":[2,3,6,10,13,15],"dysfunct":11,"e":[0,13],"e5c032d3ec4e64a6aca9927ba8ab73336780f6d71790":13,"e702c42ba8":13,"e7536ee90bd4a440e130490b87a25124":13,"each":[0,2,3,6,8,9,10,12,13],"earli":[10,15],"earlier":12,"eas":[6,12],"easi":[2,4,6,10,12,13,14],"easier":[2,6,8,13,14],"easiest":[2,4,6,12],"easili":[2,6,8,12,13,14,15],"eastern":12,"ecdh":[12,14],"echo":5,"echo_destin":0,"echo_request":0,"economi":15,"ecosystem":[2,6,10,12,13,15],"ed25519":[12,14],"edit":[2,3,13],"editor":[3,13],"eeprom":13,"effect":[6,12,13],"effici":[0,2,6,8,9,10,12,13,14,15],"effort":[4,15],"effortlessli":10,"eg":13,"ei":0,"either":[2,4,8,9,12,13,15],"elaps":6,"electromagnet":15,"eleg":15,"element":[8,15],"elif":0,"elimin":[8,15],"ellipt":[8,9,12,14],"els":[0,8,10,11,12,14,15],"email":10,"embed":4,"embrac":15,"emerg":[5,10],"emiss":10,"emploi":[4,12],"empow":14,"empti":[0,3,15],"emul":[2,13],"enabl":[0,2,3,4,5,8,9,10,12,13,14,15],"enable_ratchet":9,"enable_remote_manag":13,"enable_transport":[6,12,13],"encapsul":[6,14],"encod":[0,9,10,13,15],"encount":[2,8],"encourag":[2,15],"encrypt":[0,2,5,6,8,9,10,12,13,14],"encrypted_mdu":9,"end":[0,6,8,9,10,12,14],"endless":[6,15],"endpoint":[0,8,9,10,12,15],"energi":[2,15],"enforc":[6,9,12,13],"enforce_ratchet":9,"engag":15,"engin":[2,10,11,15],"enhanc":12,"enough":[2,4,6,10,12],"ensur":[0,2,6,8,9,10,12,13,14,15],"ensurepath":2,"enter":[0,13],"entir":[0,2,8,9,10,12,13,14,15],"entiti":[8,12,13,15],"entri":[0,2,12,13,15],"entropi":15,"entrypoint":[5,6,13],"enumer":0,"envelop":[9,15],"environ":[2,3,5,6,8,11,12,13],"environment":12,"environmentlogg":12,"eof":6,"ephemer":[8,9,12,14],"epub":5,"equal":[8,9,12,15],"equip":[6,8,12],"equival":[6,15],"era":15,"erod":15,"erron":11,"error":[0,2,6,11,13,15],"esc":0,"esc_mask":0,"escap":[0,13],"esp32":4,"especi":[2,3,4,6,13],"essenti":[2,6,10,12,13,15],"establish":[0,2,6,8,9,10,13,14,15],"established_callback":9,"establishment_timeout_per_hop":9,"etc":[3,13],"eth0":6,"eth1":6,"ether":15,"ethereum":11,"ethernet":[2,5,6,8,10,12,14,15],"ethic":5,"evapor":15,"even":[0,2,6,8,9,10,12,13,14,15],"event":[6,7,15],"eventu":9,"ever":12,"everi":[0,2,6,8,9,12,13,15],"everydai":2,"everyon":[2,3,10,11,12,15],"everyth":[0,8,10,11,12,15],"evict":15,"evolv":[2,8,12],"exact":[4,6,12],"exactli":[9,12,15],"exampl":[2,3,4,5,8,9,12,13,14],"example_util":0,"exampleannouncehandl":0,"exampleconfig":[2,13],"exampleinterfac":0,"exce":[0,6,9],"except":[0,6,9],"excess":[6,13],"exchang":[8,9,12,14],"exclud":[3,9,12],"execstart":13,"execstartpr":13,"execut":[0,2,3,6,9,13],"exhaust":[4,10,12,13],"exist":[0,2,3,4,5,6,8,10,12,13,14],"exit":[0,3,6,9,13],"expand":[8,10,12,14],"expand_nam":9,"expans":15,"expect":[0,3,6,9,11,12,13],"expens":[4,6],"experi":[8,10,12,13,15],"experienc":0,"expir":6,"expiri":[6,9],"explain":[4,9],"explan":[12,13],"explicit":9,"explicitli":[6,8,12,13],"explor":[0,10,12,14,15],"export":[2,13],"expos":[6,9,13],"exposur":6,"express":[3,7],"extend":[0,9],"extens":[3,6,10,13,14],"extern":[0,2,6,9,13,14,15],"extra":[2,6,13],"extract":[13,15],"extrem":[2,10,12,13,14,15],"f":[0,2,13],"f4":6,"f53a1c4278e0726bb73fcc623d6ce763":13,"fabric":[5,8],"face":[6,10],"facilit":[10,12],"fact":[2,6,14],"factor":[6,9,13],"fade":15,"fail":[0,2,6,9,15],"failed_callback":[0,9],"failur":[2,6,9,15],"fake":13,"fallaci":5,"fallback":15,"fallen":15,"fals":[0,6,8,9],"famili":2,"familiar":10,"fantasi":15,"far":[2,8,12],"fashion":11,"fast":[5,6,8,9,10,12],"faster":[2,6,12,15],"fastest":[6,12],"fat":15,"favor":2,"favorit":10,"fe80":2,"featur":[2,3,5,6,8,9,10,11,12,13,14],"feder":[10,12,13,15],"fedora":2,"feed":[2,9,15],"feedback":[0,5],"feel":[10,15],"fernet":12,"fetch":[3,6,13],"few":[2,4,6,8,10,12,13,14,15],"fewer":9,"ff":13,"fi":11,"fiber":[4,15],"fibr":14,"field":[12,15],"file":[0,2,3,4,6,7,8,9,10,12,13,14],"file_resourc":0,"file_s":0,"filelist":0,"filelist_data":0,"filelist_receiv":0,"filelist_timeout_job":0,"filenam":0,"filesync":5,"filetransf":[5,9],"filter":[0,8,12,13],"final":[0,9,12,15],"find":[3,5,6,10,12,13,15],"find_spec":0,"fine":6,"fingerprint":15,"finish":5,"finit":15,"fire":15,"firewal":[2,6,8,15],"firmwar":[2,4,12,13],"firmware_hash":13,"first":[0,2,3,6,8,9,12,13,15],"fit":[0,7,15],"five":[0,15],"fix":[3,5,12,15],"fixed_mtu":6,"flag":[0,2,9,12,13],"flash":13,"flasher":2,"flat":15,"flaw":15,"fleet":12,"flesh":15,"flexibl":[2,3,4,6,8,10,13,14],"fli":12,"flicker":15,"flight":9,"flip":15,"float":[0,9],"flood":[6,13],"flow":[0,2,5,6,8,12],"flow_control":6,"fluid":15,"fluiditi":15,"fluidli":15,"flush":0,"focu":13,"focus":[10,12],"folder":0,"follow":[0,2,3,4,6,7,9,11,12,13,14,15],"font":3,"forbid":15,"forc":[0,13,15],"forcibli":[9,13],"foreground":2,"forev":15,"forg":15,"forget":[8,13],"fork":10,"form":[2,6,8,9,12,13,15],"format":[0,5,10,13,14],"forth":0,"fortun":15,"forward":[5,6,8,9,10,12,13,14],"forward_ip":6,"forward_port":6,"found":[0,2,6,9,12,13,15],"foundat":[8,11,12,14,15],"fragil":15,"frame":[0,6],"framework":10,"free":[2,7,8,10,11,14,15],"freedom":[12,15],"freedv":4,"freeli":12,"freq":13,"frequenc":[2,4,6,12,13],"frequent":[6,8],"friend":[2,15],"friendli":10,"from":[0,2,3,4,5,6,7,8,9,10,11,12,13,14],"from_byt":9,"from_fil":9,"from_identity_hash":9,"fromhex":0,"front":[3,12],"frontend":10,"fruit":0,"ftdi_ft230x_basic_uart_43891ckm":13,"fuel":15,"full":[0,2,3,6,8,9,10,12,13,14],"full_hash":9,"full_nam":[9,13],"fulli":[0,2,4,6,10,12,13,14],"funcion":9,"function":[0,2,3,4,5,6,7,8,9,10,11,13,14,15],"fundament":[4,8,12,13,15],"furnish":7,"further":[2,5,6,13,15],"futur":[3,5,8,9,10,13,15],"fw":13,"g":[0,12,13],"ga":0,"gain":[4,9,12,15],"galact":12,"gap":2,"gaslit":15,"gatekeep":[12,15],"gatewai":[0,2,6,8,12,13,15],"gbp":13,"gear":15,"gen_tim":3,"gener":[0,2,3,4,6,8,9,12,13,14,15],"generalis":14,"genuin":13,"geograph":[2,6],"get":[0,3,4,5,6,8,9,10,13,15],"get_ag":9,"get_channel":[0,9],"get_config_obj":0,"get_data_s":9,"get_establishment_r":9,"get_expected_r":9,"get_external_ip":6,"get_hash":9,"get_inst":9,"get_mdu":9,"get_mod":9,"get_mtu":9,"get_packet_rssi":0,"get_packet_snr":0,"get_part":9,"get_private_kei":9,"get_progress":[0,9],"get_public_kei":9,"get_q":9,"get_random_hash":[0,9],"get_remote_ident":[0,9],"get_request_id":9,"get_respons":9,"get_response_tim":9,"get_rssi":9,"get_rtt":[0,9],"get_seg":9,"get_snr":9,"get_statu":9,"get_transfer_s":9,"geti2p":6,"ghost":15,"ghz":12,"gi":0,"giant":15,"gift":15,"gigabit":[8,15],"gigabyt":14,"git":[5,13],"github":[0,2],"give":[2,6,12,13,15],"given":[6,8,9,12,13,15],"global":[0,5,6,8,9,12,13,14],"globe":15,"glue":4,"go":[0,6,8,12,15],"goal":[2,5,6,8,10,14],"goe":15,"good":[2,4,8,12,13],"goodwil":15,"got":[0,15],"got_respons":0,"govern":[12,15],"gpio":10,"grace":9,"gracefulli":[6,8],"grade":5,"grant":[3,7,13,15],"grape":0,"graphic":10,"gratefulli":11,"graviti":15,"great":[2,3,12,13,15],"greater":[9,12,13,14],"greatli":[2,6],"green":15,"grid":[10,15],"gross":15,"ground":15,"group":[3,6,9,10,12,13],"group_id":6,"group_nam":3,"groupinstal":2,"grow":[2,15],"grown":15,"growth":2,"guarante":[8,11,12],"guard":15,"guess":6,"gui":10,"guid":[2,4,10,12],"guidelin":2,"guilt":10,"gun":15,"gw":6,"gz":3,"h":[3,13],"ha":[0,3,4,6,8,9,10,11,12,13,14,15],"habit":15,"habitat":15,"hack":14,"had":12,"half":[12,14],"hammer":15,"hand":[0,15],"handheld":12,"handl":[0,2,4,6,8,9,10,12,13,14],"handler":[0,9,13,15],"handshak":15,"happen":[0,2,9,12,15],"hard":[2,4,15],"hardcod":15,"hardlin":8,"hardwar":[0,2,5,6,9,10,12,13,14,15],"harm":[5,7],"has_path":[0,9],"hasattr":0,"hash":[0,3,8,9,12,13,15],"hash1":12,"hash2":12,"hash_from_name_and_ident":9,"hashlib":12,"hashmap":0,"have":[0,2,3,4,6,8,9,10,11,12,13,14,15],"hazard":9,"hdlc":0,"header":[0,6,9,12],"header_1":12,"header_2":12,"health":5,"hear":[12,15],"heard":[9,10,12,13],"heart":15,"heavi":15,"height":6,"held":[6,13],"helium":0,"hellman":[8,12],"hello":3,"hello_world":3,"help":[0,2,3,8,11,12,13,15],"helper":[0,3,13],"here":[0,2,6,12,13,15],"herebi":7,"heterogen":[2,5,14],"hex":[0,13],"hexadecim":[0,12,13],"hexbyt":13,"hf":[10,15],"hidden":13,"hide":[2,15],"hierarch":[14,15],"hierarchi":15,"high":[4,6,8,12,13,14,15],"higher":[6,8,14],"highest":9,"highli":[3,6,11,12,13],"highlight":5,"hijack":15,"hint":[0,3],"histori":[3,10],"hit":0,"hkdf":12,"hmac":[12,14],"hoc":[14,15],"hold":[6,9,12,15],"holder":[7,8],"hole":15,"hollow":15,"home":[2,8,10,13,15],"homebrew":6,"hop":[6,8,9,12,13,14,15],"hopefulli":8,"hops_to":9,"host":[0,3,5,6,8,10,12,13],"hostil":5,"hostnam":[6,15],"hotspot":15,"hour":[0,6,13,15],"hous":[2,15],"how":[0,2,4,6,8,10,12,13,14,15],"howev":[2,6,8,12],"http":[0,10,11,15],"hub":[6,10,13],"hum":15,"human":[0,5,6,7,8,9,11,12],"hundr":[8,10,15],"hungri":4,"hw_mtu":0,"hwrev":13,"hz":[6,13],"i":[0,2,3,4,5,6,7,8,9,10,11,12,13],"i2p":[2,5,8,10,14],"i2p_tunnel":6,"i2pd":[2,6],"i2pinterfac":[2,6],"ia":13,"ic":4,"ic_burst_freq":6,"ic_burst_freq_new":6,"ic_burst_hold":6,"ic_burst_penalti":6,"ic_held_release_interv":6,"ic_max_held_announc":6,"ic_new_tim":6,"icmp":10,"icon":[3,15],"id":[6,9,12,13],"id_callsign":6,"id_interv":6,"idea":[2,12,13,15],"ideal":[10,13,14],"ident":[0,2,3,5,6,8,9,10,13,14],"identif":[5,6,14],"identifi":[0,6,8,9,12,13,14],"identifyexampl":0,"identity_data":13,"ie":13,"if00":13,"ifac":[0,2,6,8,12,13],"ifac_s":6,"ifconf":0,"ifconfig":13,"ignor":[3,6,8,9,11,12,13],"ignored_devic":6,"illus":5,"illustr":[0,6,12],"imag":15,"imagin":[8,15],"immedi":[6,13,15],"immens":15,"immort":15,"immut":15,"impact":[6,8,9,12],"impati":15,"imperson":8,"implement":[0,3,5,6,8,9,10,11,12,15],"impli":7,"implic":[5,6,8],"implicit":[8,9,12],"implicitli":13,"import":[0,2,4,6,8,9,11,12,13],"importantli":[2,15],"importlib":0,"imposs":[12,15],"impract":13,"improv":[2,5,6,10,11,15],"in_fram":0,"in_wait":0,"inactive_for":9,"inadvert":13,"inbound":[0,6,9],"inbox":8,"includ":[0,3,4,5,6,7,8,9,10,12,14],"inclus":8,"incom":[0,6,9,13],"incompat":[9,12],"incomplet":8,"increas":[3,6,9,13],"incredibli":15,"incur":6,"indefinit":13,"independ":[5,9,12],"index":[0,2,5],"indic":[0,9],"indiffer":15,"indirectli":[7,12],"individu":[2,3,6,9,11,12,13,14,15],"inevit":[2,12],"infer":12,"infinit":15,"influx":[6,10],"influxdb":10,"info":[3,9,12,13,15],"inform":[0,2,3,5,6,8,9,10,11,12,13,15],"infrastructur":[4,5,6,8,10,12,13],"ingest":15,"ingo":9,"ingress":[0,6],"ingress_control":6,"inhabit":15,"inher":8,"init":2,"initi":[0,3,6,8,9,12,13,14],"initialis":[0,3,9,13],"input":[0,13],"insert":12,"insid":[12,15],"insight":15,"inspect":[2,3,6,8,12,13],"inspir":15,"instal":[0,3,5,6,12,13,14],"instanc":[0,5,6,9,10,12,13,15],"instance_control_port":13,"instance_nam":13,"instant":15,"instanti":9,"instantli":13,"instead":[0,2,3,6,9,12,13,15],"institut":15,"instruct":[2,3,15],"int":[0,9],"integ":[0,9],"integr":[2,10,12,13,15],"intellig":[7,15],"intend":[2,6,8,12,13],"intens":13,"intent":[8,15],"intention":[10,12],"inter":[2,9,12],"inter_byte_timeout":0,"interact":[0,2,3,5,8,9,12,13,15],"intercept":8,"interchang":6,"interconnect":[2,6,8,12],"interest":[10,12,15],"interfac":[3,4,5,8,9],"interface_class":0,"interface_discovery_sourc":[9,13],"interface_en":13,"interfer":[8,13],"intermedi":[8,15],"intermediari":[6,9,12],"intermitt":[6,8,15],"intern":[0,3,6,9,12,15],"internal_1":6,"internet":[5,6,8,10,12,13,14,15],"internetwork":2,"interoper":[4,8,10,12,14],"interrupt":6,"interv":[3,6,9,13],"intervent":13,"intiat":0,"intim":15,"introduc":[3,12,13,15],"introduct":5,"introductori":5,"intuit":[8,14],"invalid":[0,6,9],"invari":15,"invers":12,"invert":15,"invest":8,"invis":[2,6],"invit":6,"invok":3,"involv":[3,8,11],"io":4,"iodin":10,"ioerror":0,"iot":4,"ip":[2,4,5,6,8,12,13,14],"ipv4":6,"ipv6":[2,6,13],"irc":10,"irrelev":11,"irrespons":15,"is_compress":9,"is_connected_to_shared_inst":0,"is_open":0,"is_path_respons":9,"is_ready_to_send":[0,9],"isdir":0,"isfil":0,"isinst":0,"ism":[4,12],"isn":15,"isol":[2,6,13],"isp":[6,8,15],"issu":[5,6,8],"its":[3,4,6,7,8,9,12,13,15],"itself":[5,8,10,12,13,15],"iv":[12,14],"j":[5,13],"jail":13,"javascript":10,"job":0,"join":[0,2,8,10,12],"journei":8,"json":[13,15],"just":[0,2,3,4,6,8,10,12,13,14,15],"k":[0,13],"kb":13,"kbp":13,"keep":[0,2,8,9,12,13,14,15],"keepal":[9,12],"keepalive_timeout_factor":9,"kei":[0,5,6,8,9,13,14,15],"kept":[6,8,9,12],"kernel":[6,13,14],"keyboardinterrupt":0,"keyerror":9,"keypad":10,"keypair":[8,12],"keyr":15,"keyset":[12,13,14],"keysiz":9,"keystor":8,"khz":6,"ki":0,"kill":[9,12,15],"kind":[4,6,7,8,10,12,15],"kiss":[4,5,10,13,14],"kiss_fram":6,"kissinterfac":[6,13],"knock":15,"know":[0,2,4,6,8,9,12,13,15],"knowledg":[8,12],"known":[0,6,9,12,13,14,15],"ko":11,"krypton":0,"l":[6,13],"la":13,"labor":15,"lack":12,"laid":12,"lan":6,"landlord":15,"languag":[3,7,10],"lantern":15,"laptop":[8,15],"larg":[0,4,6,8,9,12,13,14,15],"larger":[8,12,13],"laser":6,"last":[0,6,9,13,15],"last_read_m":0,"last_unit":0,"latenc":[2,8,12,14,15],"later":[0,2,6,10,13],"latest":[0,2,6,9,13],"latest_buff":0,"latest_client_link":0,"latitud":6,"laucnh":2,"launch":[10,13],"law":15,"layer":[4,6,8,9,10,12,13,14,15],"lcd":10,"lead":[2,12,15],"leak":2,"learn":[0,2,7,8,11,12,15],"leas":15,"leash":15,"least":[2,3,4,6,8,12,13,14],"leav":[8,10,12,15],"ledger":[12,15],"left":[6,9,12,13],"legaci":[8,15],"legal":[6,15],"legisl":6,"legitim":[2,8,13],"len":[0,15],"length":[0,6,9,12],"less":[0,2,4,6,9,12,14,15],"let":[0,2,6,8,10,12,13,15],"level":[3,4,6,8,12,13],"lever":15,"li":15,"liabil":7,"liabl":7,"liber":[4,5],"liberapai":11,"libffi":2,"librari":[2,10,15],"licens":[5,12,14,15],"lie":15,"life":15,"lifelin":15,"lift":[13,15],"light":[13,15],"lightweight":14,"like":[0,2,3,4,6,8,9,10,12,13,14,15],"limit":[0,2,4,5,7,8,10,12],"line":[0,2,3,5,6,10,12,13,14,15],"linger":13,"link":[2,3,4,5,6,8,9,10,13,14,15],"link_clos":0,"link_establish":0,"link_id":[0,9],"link_mtu_discoveri":9,"linkexampl":0,"linux":[2,4,6,10,12],"liquid":15,"list":[0,2,3,4,5,6,9,10,12,14,15],"list_deliv":0,"list_fil":0,"list_filt":13,"list_packet":0,"list_receipt":0,"list_timeout":0,"listdir":0,"listen":[0,2,3,5,10,12,13,15],"listen_ip":6,"listen_on":[2,6],"listen_port":6,"liter":13,"litter":15,"littl":[4,10,12],"live":[2,9,10,15],"lki":12,"lkr":12,"ll":[0,14,15],"llm":10,"ln":13,"load":[0,2,4,6,9,13,14,15],"load_private_kei":9,"load_public_kei":9,"local":[0,2,5,6,8,9,10,12,14,15],"locat":[2,3,6,8,12,13,15],"lock":15,"log":[0,2,3,6,13,15],"log_crit":0,"log_error":0,"log_info":0,"log_verbos":0,"logdest":9,"logfil":13,"logic":[12,15],"login":13,"loginctl":13,"loglevel":[0,9,13],"long":[0,2,4,6,8,9,12,13,15],"longer":[0,2,12,13,15],"longest":6,"longitud":6,"look":[0,2,3,6,8,10,12,13,15],"loop":0,"lora":[2,4,5,8,10,12,14,15],"lorawan":[4,12],"loss":[6,8,12],"lost":15,"lot":[8,12,15],"loudest":15,"low":[2,4,6,8,10,12,14,15],"lower":[0,2,6,13],"lowli":15,"ltu":4,"lunar":5,"lxmf":[5,6,8,9,13],"lxmfy":5,"lxst":5,"m":[0,2,12,13],"mac":[6,12],"machin":[2,7,12,13,15],"machineri":10,"maco":[5,10],"made":[2,3,6,9,12,15],"mai":[2,6,8,9,10,12,13,15],"mailbox":10,"main":[0,3],"maintain":[2,8,12,13,14],"mainten":[2,8,12,15],"make":[0,2,4,6,8,10,11,12,13,14,15],"malici":[2,8,12,13],"malinform":11,"manag":[2,5,8,9,10,12,14,15],"mani":[0,2,3,4,6,8,9,10,12,13,14,15],"manipul":[12,14,15],"manjaro":2,"manner":[8,10],"manual":[0,2,6,8,9,12,13,14,15],"manufactur":[4,6],"map":[6,10,12,13,15],"mark":[2,7,9,12,14,15],"markdown":3,"market":15,"markqvist":[0,11],"markup":[3,10],"mass":15,"master":[0,3,9,15],"match":[0,6,12,13,15],"materi":10,"math":15,"mathemat":15,"matter":[2,6,8,15],"matur":13,"max":13,"maximum":[0,6,9,12,13],"mayb":15,"mb":3,"mbp":13,"md":3,"mdu":[0,9],"me":[6,15],"mean":[2,4,6,8,9,12,13,15],"meaning":2,"meantim":9,"measur":[8,12,15],"mechan":[2,5,6,8,13,14],"media":15,"mediev":15,"medium":[0,4,5,6,8,9,10,12,14],"meet":15,"megaphon":15,"member":[2,12],"memori":[2,8,12],"mental":15,"mention":[6,12],"menu":0,"menu_mod":0,"merchant":7,"mere":15,"merg":[7,13],"merit":5,"mesh":[2,6,8,12,13,14,15],"meshchat":5,"meshchatx":5,"messag":[0,2,3,8,9,10,12,13,15],"message_class":9,"messagebas":[0,5,9],"messagecallbacktyp":9,"messeng":[8,12],"met":[2,15],"meta":3,"metadata":[2,3,6,12,13,15],"metaphor":15,"metavar":0,"meter":6,"meth":0,"method":[0,2,6,9,12],"methodologi":[12,13],"metric":10,"mevpekyafshak5wr":6,"mhz":[6,12],"mi":0,"microcontrol":12,"micromanag":15,"micron":[3,5],"microwav":8,"might":[2,3,6,8,12,13,15],"mikrotik":4,"millimet":4,"million":15,"millisecond":[0,8,13,15],"mind":[8,15],"mindset":15,"mine":15,"miner":15,"minim":[4,5,6,12],"minimalsampl":0,"minimum":[0,2,6,9,12,13,15],"minimum_bitr":9,"miniscul":15,"minut":[0,2,6,12,15],"mirror":[8,13],"misconfigur":2,"mislead":[2,15],"miss":[0,2],"missil":15,"mistak":2,"misunderstand":11,"mitig":8,"mix":[5,6,8,13],"mixtur":14,"mobil":[6,8,12],"mode":[0,2,3,4,5,8,9,10,12,13,14,15],"model":[7,8,13,15],"modem":[5,6,8,9,10,12,14,15],"modem73":10,"moder":6,"modern":[2,4,10,15],"modifi":[6,7,8,12,13],"modul":[0,2,3,4,5,6,8,12,13,14],"modular":10,"moment":[12,15],"momentarili":6,"monero":11,"monitor":[2,6,10,12,13],"moon":0,"moral":15,"more":[0,2,4,6,8,9,10,11,12,13,14,15],"most":[2,4,6,8,9,10,12,13,15],"mostli":[6,8,12],"motiv":5,"mountain":15,"move":[6,8,12,13,15],"msgtype":[0,9],"mtu":[0,6,9,12,14],"mu":3,"much":[2,6,8,12,13,14,15],"multi":[5,8,10,12,13,14],"multicast":6,"multicast_address_typ":6,"multilater":12,"multipl":[0,6,8,10,12,13],"multiplex":[0,13],"multipoint":12,"multitud":2,"must":[0,2,3,6,8,9,12,13,15],"mutual":15,"mw":6,"my":[3,6,12,15],"my_fil":13,"my_ident":13,"my_network":[12,13],"my_network_ident":6,"myapp":3,"mycal":6,"myfriend":15,"myrepo":3,"myriad":12,"mysteri":15,"n":[0,3,12,13],"name":[0,2,3,5,6,8,9],"namespac":0,"nano":3,"narg":0,"nat":[2,6],"nativ":[0,8,10],"natur":6,"navig":3,"nearbi":[6,8],"nearest":6,"nears":12,"neat":8,"neccessari":6,"necesarri":6,"necessari":[3,4,6,8,9,12],"necessarili":12,"need":[0,2,3,4,5,6,8,9,10,11,12,13,14,15],"neg":2,"neglig":[12,15],"negoti":15,"neighbor":15,"neither":[9,12],"neon":0,"neopixel":13,"nerd":3,"net":6,"netcat":6,"network":[0,4,6,9,13,14,15],"network_ident":[6,12,13],"network_nam":[2,6],"neutral":[8,15],"never":[6,8,9,12,15],"new":[0,2,3,5,8,9,12,13,15],"new_id":13,"new_ident":13,"newer":[9,12],"newest":12,"newli":[6,9,12],"newlin":[6,13],"next":[2,3,6,9,12,15],"next_hop":9,"next_hop_interfac":9,"nice":15,"nicknam":12,"no1cll":6,"no_data_for":9,"no_inbound_for":9,"no_outbound_for":9,"noauth":13,"nobl":0,"noble_ga":0,"noble_gas":0,"nocheck":13,"node":[2,3,5,6,13,14],"node_nam":3,"noid":13,"nois":[9,11,15],"noisi":15,"nomad":5,"nomadnet":10,"nomadnetwork":10,"non":[2,6,9,10,12,15],"none":[0,2,3,6,9,12,13],"noninfring":7,"nor":[2,15],"normal":[0,2,3,6,9,12,13],"notabl":10,"notat":[12,13],"note":[0,3,4,5,6,9,12,13],"noth":[4,8,14,15],"notic":[3,6,7,12,13],"notif":[0,9],"now":[0,2,12,13,15],"np":13,"nrf52":4,"nt":0,"num":0,"number":[0,2,3,6,8,9,10,12,13,15],"o":[0,2,6,12,13,14],"obj":3,"object":[0,9,15],"obscur":2,"observ":[8,15],"obsolet":15,"obstacl":15,"obtain":[2,4,7,9,12],"obvious":12,"occupi":15,"occur":[0,6,13,14],"ocean":15,"ocur":9,"odd":0,"ofdm":10,"off":[2,6,8,10,12,13,14,15],"offer":[2,5,6,8,9,10,12,13,15],"offic":8,"offlin":[0,2,8,10],"often":[2,6,8,12,13,15],"oganesson":0,"old":[0,2,4,11,12,15],"older":13,"omit":9,"on_interfac":9,"onc":[0,2,3,4,6,9,12,13,14,15],"one":[0,2,3,4,6,8,9,10,12,13,14,15],"ones":[2,6,8,13],"oneself":12,"ongo":10,"onli":[0,2,3,4,6,8,9,12,13,14,15],"onlin":[0,13,15],"onto":[2,12,15],"opaqu":8,"open":[0,2,3,4,5,6,8,9,10,11,12,13,14],"open_port":0,"openmodem":[6,14],"openssl":[2,12],"openwrt":5,"oper":[2,3,4,6,8,9,12,13,14,15],"opinion":11,"opkg":2,"opportun":2,"opportunist":8,"opposit":[0,6],"oppress":15,"opt":12,"optic":[4,14,15],"optim":[2,3,8,15],"option":[0,2,3,4,5,8,9,10,12,13,15],"ord":0,"order":[0,9,13],"organ":[2,3,8,12,13,15],"organis":[6,11],"orient":12,"origin":[0,8,10,12,15],"os":2,"other":[0,2,3,4,6,7,8,9,10,12,13,15],"otherwis":[0,7,9],"our":[0,6,12,15],"ourselv":8,"out":[0,4,6,7,9,10,12,13,15],"outbound":[9,12],"outgo":[0,6,9,12,13],"outlin":[2,4,12],"output":[3,6,13],"outsid":[9,14,15],"over":[0,4,5,6,8,9,10,11,12,13,14,15],"overal":[12,13],"overcom":12,"overhead":[2,4,6,12,15],"overlai":2,"overli":11,"overlord":15,"overrid":0,"oversight":12,"overview":[3,5,6],"overwhelm":[6,8,9],"overwrit":13,"own":[0,2,8,9,12,13,14,15],"owner":[0,15],"ownership":15,"p":[0,3,13],"pack":[0,9],"packag":[0,2,6,10,12],"packb":0,"packed_s":0,"packet":[0,2,5,6,8,9,10,13,14,15],"packet_callback":0,"packet_deliv":0,"packet_hash":0,"packet_receipt":[0,9],"packet_timed_out":0,"packetreceipt":[0,5,9],"pad":[12,14],"page":[5,12,13,15],"page_cont":3,"pagin":3,"pair":[6,9,12,13],"pamac":2,"panic":[0,13,15],"panic_on_interface_error":[0,13],"panopticon":15,"paper":10,"par":[0,2],"paradox":15,"parallel":2,"paralysi":15,"param":0,"paramet":[0,3,4,5,9,12,13],"paranoia":15,"parasit":15,"pariti":[0,6,13,14],"parity_even":0,"parity_non":0,"parity_odd":0,"pars":0,"parse_arg":0,"parser":[0,5],"part":[0,2,3,6,8,9,10,12,13,15],"particip":[2,5,6,8,12,13,15],"particular":[0,4,6,7,12,13],"particularli":[6,13],"partner":15,"pass":[0,4,6,8,9,12,13,15],"passphras":[2,6,8,12],"passport":12,"past":13,"patch":15,"path":[0,2,3,4,6,8,9,12,13,15],"path_respons":9,"pathfinder_m":9,"patient":15,"pattern":[4,5,8,12],"payload":[0,6,9,12,13],"pdf":5,"peac":15,"peach":0,"peak":3,"peer":[0,2,3,6,9,10,12,13,15],"penalti":6,"pend":[0,12],"peopl":[2,10,12,15],"per":[3,6,8,9,10,12,13,14,15],"percent":[0,6],"percentag":9,"perfectli":2,"perform":[0,2,3,6,8,9,10,12,13,15],"perhap":[2,15],"period":[0,3,6,9,12,13],"peripher":10,"perman":[2,6,13],"permiss":[3,6,7,13,15],"permissionless":[12,13],"permit":7,"perpetu":15,"persecut":12,"persist":[6,13,15],"person":[5,6,7,8,11,12],"perspect":[6,8,9,12,14],"pet":0,"petit":15,"philosophi":[11,12,14,15],"phone":[2,5,8,15],"phonebook":10,"photo":15,"phy":13,"physic":[0,2,4,5,6,8,9,10,12,13,14],"pi":[0,5,8,12,13,14,15],"pick":12,"piec":12,"pillar":15,"ping":[13,15],"pip":[0,2,3,4,6,13],"pip3":2,"pipe":[5,10,13,14,15],"pipeinterfac":[4,6,10],"pipx":2,"pitfal":12,"pkcs7":[12,14],"pkg":2,"place":[0,2,6,8,12,13,15],"plaform":4,"plain":[0,4,6,9,12,15],"plain_mdu":9,"plaintext":[0,9,15],"plan":[8,12,15],"planet":15,"planetari":[14,15],"platform":[0,4,5,10,12,13,15],"pleas":[0,2,6,9,13,15],"plenti":[8,12],"plug":[13,15],"plugin":[10,15],"pmr":12,"poetri":15,"point":[2,3,4,6,8,10,11,12,13,15],"pointer":2,"polici":[13,15],"polit":15,"pomelo":0,"popul":9,"popular":14,"port":[0,2,4,5,6,8,12,14,15],"port0":13,"portabl":[5,6,8,12],"portion":7,"pose":[2,12],"posit":[0,3,13],"posix":2,"possess":[6,12,15],"possibl":[2,4,6,8,9,10,12,13,14],"possibli":[2,12],"post":[0,5],"postfix":13,"potenti":[0,2,6,11,12,13,14,15],"power":[2,4,5,6,8,10,12,13,14],"powershel":2,"ppp":0,"practic":[8,12,14,15],"pre":[2,8,9,12],"preambl":[6,13],"preced":0,"preciou":8,"precompil":2,"predatori":15,"predict":12,"prefer":[2,3,11,12],"prefer_ipv6":6,"premis":[8,15],"prepar":[0,12],"prerequisit":9,"presenc":[5,6,9],"present":[6,8,10,12,13,15],"preserv":[2,5,9],"preshar":12,"press":0,"pretend":[10,12],"prettyhexrep":0,"prevent":[6,8,13,15],"preview":3,"previou":0,"previous":[6,9,12],"price":15,"primari":[12,15],"primarili":[6,8,10],"primarlii":2,"primit":[2,5],"principl":[5,8,12,14],"print":[0,3,6,13],"print_filelist":0,"print_help":0,"print_menu":0,"priorit":[8,12,15],"prioriti":12,"prioritis":[5,6,8,9],"privaci":[2,6,10,15],"privat":[2,6,8,9,10,11,12,13,14,15],"private_ret":2,"privileg":[13,15],"probabl":[0,2,8,12,13,14],"probe":13,"problem":[2,12,13,15],"proc":13,"procedur":[2,9,12],"process":[0,2,4,6,8,9,12,13,15],"process_incom":0,"process_outgo":0,"product":[13,15],"profil":15,"profit":15,"profound":[8,15],"profoundli":15,"program":[0,3,4,5,6,9,12,14],"program_setup":0,"programm":12,"programmat":12,"progress":[0,9,13,14],"progress_callback":9,"project":[10,11,15],"promis":2,"prompt":[0,2],"proof":[0,6,8,9,12,13,15],"proof_packet":0,"proof_requested_callback":9,"proof_strategi":9,"propag":[5,6,8,9,10,13,15],"proper":2,"properli":2,"properti":[0,8,9],"proport":12,"protect":[2,13,15],"protocol":[2,3,4,5,6,8,14],"prove":[0,8,12,15],"prove_al":[0,9],"prove_app":9,"prove_non":9,"proven":[9,12],"provid":[0,2,3,4,5,6,7,8,9,10,12,13,14,15],"provis":[4,13],"prv_byte":9,"pseudo":13,"psycholog":15,"pub_byt":9,"public":[0,3,5,6,8,9,11,13,14],"public_inform":0,"publicli":[2,6,12,13],"publish":[2,3,5,6,7,9,12],"publish_blackhol":13,"publish_blackhole_en":9,"publish_ifac":6,"pull":3,"puppet":15,"purchas":[2,12,14],"pure":[5,12],"purg":9,"purpos":[2,4,6,7,8,9,10,12,13,15],"purposefulli":7,"push":[3,10,15],"put":[0,4,6,13],"py":[0,3,12,13],"py3":2,"pyca":[2,12],"pygment":3,"pyseri":[0,2],"python":[0,3,5,6,9,12,13,14,15],"python3":[0,2,4],"q":[0,3,13],"qr":[8,10],"qualiti":[9,13,15],"queri":[0,2,9,13,15],"question":[2,4,6],"queu":[9,13],"queue":[6,12],"quick":13,"quickli":[10,11,12,14],"quiet":[3,6,13,15],"quinc":0,"quirk":2,"quit":[0,2],"qvist":[7,14],"r":[0,3,6,12,13],"radic":15,"radio":[5,6,8,9,10,12,13,14,15],"radon":0,"rais":[0,9],"rak":4,"ram":[2,6],"randint":0,"random":[0,9,11,12],"random_text_gener":0,"randomis":12,"randomli":[0,12],"rang":[0,2,3,4,6,8,12,13,14,15],"rapidli":6,"rare":[2,6],"raspberri":[5,8,12,13,14],"rasperri":2,"ratchet":[9,12],"ratchet_count":9,"ratchet_expiri":9,"ratchet_id_receiv":9,"ratchet_interv":9,"ratchets":9,"ratchets_path":9,"rate":[0,2,5,9,10,13],"rather":[2,9,10,13,15],"ratio":9,"raw":[0,3,4,9],"rawchannelread":[5,9],"rawchannelwrit":[5,9],"rawiobas":9,"rb":0,"rbrowser":5,"re":[0,6,8,9,12,13,15],"reach":[2,5,6,8,9,13,15],"reachabl":[0,2,6,8,9,10,12,13],"reachable_on":6,"read":[0,2,3,6,8,9,12,13,14,15],"read_loop":0,"readabl":[0,6,9,12,13,15],"reader":[0,9],"readi":[0,2,4,6,9,14,15],"readili":14,"readm":3,"ready_byt":[0,9],"ready_callback":9,"real":[2,4,6,8,10,13,14,15],"realiti":[2,11,15],"realiz":15,"realli":[6,9,13,15],"realm":15,"reappear":6,"reason":[2,6,12,13],"reassembl":12,"reboot":15,"rebroadcast":8,"rebuilt":15,"recal":[0,9,13],"recall_app_data":9,"recap":12,"receipt":[0,8,9,12],"receiv":[0,2,6,8,9,11,12,13,15],"receive_path_respons":9,"receive_stream_id":9,"received_announc":[0,9],"recent":[9,12],"recept":9,"reception_rssi":0,"reception_snr":0,"reception_stat":0,"recip":2,"recipi":[12,15],"reclaim":15,"recogn":[12,15],"recognis":13,"recognit":15,"recommend":[0,2,6,12],"recondit":13,"reconnect":[0,8,15],"reconnect_port":0,"reconstruct":12,"record":[2,3,12],"record_stat":3,"recoveri":6,"recreat":12,"recurs":[9,12],"reduc":[6,13],"redund":[2,8],"ref":3,"refer":[0,2,3,5,6,10,13,15],"refin":11,"refresh":13,"refus":8,"regain":2,"regard":12,"region":6,"regist":[0,3,9,13],"register_announce_handl":[0,9],"register_message_typ":[0,9],"register_request_handl":[0,9],"registrar":15,"registri":15,"regul":6,"regular":13,"regulatori":15,"regurgit":15,"reject":15,"rel":[3,4,6,8,12],"relai":[2,5],"relat":2,"relationship":[8,12,13,15],"releas":[2,5,6,9,12,13,15],"relev":[0,2,4,6,9,12,13,15],"reli":[2,6,8,11,12,13,15],"reliabl":[2,4,6,8,9,12,14,15],"relianc":[2,15],"relief":8,"reload":13,"rem":0,"remain":[3,6,8,9,10,12,15],"rememb":[8,9,12],"remot":[0,3,5,9,12],"remote_ident":[0,9],"remote_identifi":0,"remote_management_allow":13,"remote_management_en":9,"remote_p":0,"remotesensor":12,"remov":[3,9,13,15],"remove_message_handl":9,"remove_ready_callback":9,"render":[3,10,15],"rent":15,"replac":[0,2,8,9,10,12,13,15],"repli":[0,13],"replic":[4,12],"reply_data":0,"reply_messag":0,"reply_text":0,"repo":[3,13],"repo_nam":3,"report":[6,9,11,13],"repositori":[2,5,12,13,15],"repres":[8,12,15],"represent":[0,9,15],"repurpos":2,"reput":[12,13],"request":[5,6,8,9,12,13,14,15],"request_destin":0,"request_fail":0,"request_id":[0,9],"request_packet":0,"request_path":[0,9],"request_receipt":[0,9],"request_receiv":0,"requested_at":[0,9],"requestexampl":0,"requestor":6,"requestreceipt":[5,9],"requir":[0,2,3,6,8,9,10,12,13,14,15],"require_shared_inst":9,"required_discovery_valu":[9,13],"rerout":15,"resend":9,"reserv":[0,8,9,15],"resid":[6,15],"resili":[2,8,10,13,14,15],"resist":8,"resiz":13,"resolut":[2,6,12],"resolv":[5,6,8,12,13],"resourc":[0,2,5,6,8,9,11,13,15],"resource_callback":9,"resource_sending_conclud":0,"resource_strategi":9,"respawn":6,"respawn_delai":6,"respawn_interv":6,"respect":[3,6,8,14,15],"respond":[0,8,9,13],"respond_to_prob":13,"respons":[5,6,9,12,14,15],"response_callback":[0,9],"response_gener":[0,9],"rest":[8,14,15],"restart":[6,13],"restartsec":13,"restor":[2,6,15],"restrict":[6,7,8,13,15],"result":[0,2,6,12,13],"ret":[5,12],"retain":[6,9],"retained_ratchet":9,"retibb":5,"reticulum":[0,6,8,9],"retipedia":5,"retransmiss":[8,12],"retransmit":[6,12],"retri":[0,9,12],"retriev":[9,13],"return":[0,6,9,13,15],"reveal":[2,9,12,14],"revers":13,"review":12,"revis":13,"revok":15,"revolut":15,"rfe":13,"rich":10,"ridicul":12,"right":[2,3,6,7,15],"rigid":15,"rington":10,"rippl":15,"risc":5,"risk":12,"riski":15,"rmap":2,"rn":[0,2,3,4,5,9,12,13,15],"rncp":5,"rngit":5,"rngit_config":3,"rnid":[5,12],"rnmon":5,"rnode":[2,5,12,13,14],"rnodeconf":[4,5],"rnodef3b9":6,"rnodeinterfac":[2,4,6,13],"rnodemultiinterfac":6,"rnpath":[2,5,6],"rnphone":10,"rnprobe":[2,5],"rns_bin_dir":13,"rns_config":3,"rns_remot":3,"rnsconfig":3,"rnsd":[2,5],"rnsh":[5,10],"rnspure":[2,12],"rnstatu":[2,5,6,12],"rnstransport":[6,13],"rnx":5,"road":15,"roadmap":[11,15],"roam":[5,6,8],"robot":12,"robust":[2,6,15],"role":8,"roll":6,"rom":13,"room":[10,15],"root":12,"rotat":[9,12,13],"round":[0,9,13],"rout":[2,4,6,8,9,10,12,13,14,15],"router":[2,6,8,13,15],"rpc":13,"rpc_kei":13,"rprogress":0,"rrc":5,"rrcd":10,"rssi":[0,9,13],"rtsct":0,"rtt":[0,9,12],"rttstring":0,"rubber":15,"rule":[2,3,5,6,8,13,15],"run":[0,2,3,4,6,8,9,10,12,13,14,15],"runtim":[0,12],"rust":2,"rw":3,"rx":[6,13],"rxb":0,"sa":10,"safe":[12,13,15],"safeguard":15,"sai":15,"said":12,"same":[0,2,3,4,6,8,9,10,12,13,15],"sand":15,"satellit":8,"satisfi":12,"save":[9,12,13],"save_error":0,"saved_filenam":0,"saw":10,"scalabl":[13,14],"scale":[12,14,15],"scan":[2,6],"scarc":15,"scarciti":5,"scatter":15,"scenario":[2,6,12],"schedul":9,"scheme":[3,4,6,13],"scope":6,"scrape":15,"scratch":[4,15],"screen":0,"script":[2,3,4,6,13],"scrutini":12,"seamless":[6,12],"seamlessli":[6,8,10],"search":[5,9,10],"second":[0,6,8,9,10,12,13,14,15],"secreci":[6,9,10,12,14],"secret":[8,12],"section":[2,3,4,6,8,10,12,13],"secur":[2,3,5,8,10,12,13,14,15],"see":[0,2,3,6,8,9,12,13,14,15],"seek":[12,15],"seen":[6,12,15],"segment":[0,2,6,8,9,12,13,14],"select":[0,2,6,15],"self":[0,2,12,14,15],"sell":7,"semi":[3,13],"semtech":4,"send":[0,6,8,9,12,13,15],"send_stream_id":9,"sender":[0,2,8,12,13],"sens":[8,15],"sensibl":[2,4,6],"sensit":15,"sensor":[8,12],"sent":[0,2,8,9,12,13,15],"sentiment":12,"separ":[0,6,8,10,12,13],"sequenc":[0,9,12,13,14],"sequenti":14,"serfdom":15,"seri":4,"serial":[0,2,5,8,12,14,15],"serialinterfac":[4,6],"serv":[0,4,5,6,8,10,11,12,13,15],"serve_nomadnet":3,"serve_path":0,"server":[0,2,3,4,5,8,9,10,12,13,15],"server_buffer_readi":0,"server_callback":0,"server_client_connect":0,"server_destin":0,"server_fil":0,"server_ident":0,"server_link":0,"server_loop":0,"server_message_receiv":0,"server_packet_receiv":0,"servic":[2,3,5,6,8,10,12,15],"session":[2,10,12,13],"set":[0,2,3,4,6,8,9,10,12,13,14,15],"set_default_app_data":9,"set_delivery_callback":[0,9],"set_link_closed_callback":[0,9],"set_link_established_callback":[0,9],"set_packet_callback":[0,9],"set_proof_requested_callback":9,"set_proof_strategi":[0,9],"set_ratchet_interv":9,"set_remote_identified_callback":[0,9],"set_resource_callback":9,"set_resource_concluded_callback":[0,9],"set_resource_started_callback":[0,9],"set_resource_strategi":[0,9],"set_retained_ratchet":9,"set_timeout":[0,9],"set_timeout_callback":[0,9],"setup":[0,2,5,6,13],"sever":[2,8,9,13],"sf":13,"sh":6,"sha":[8,9,12],"sha256":[12,14],"shall":[7,12],"shape":[8,15],"share":[0,2,8,9,10,12,13,15],"share_inst":13,"shared_instance_port":13,"shared_instance_typ":[9,13],"shelf":[12,14],"shell":[2,3,5,13,15],"shift":15,"shine":15,"ship":[12,15],"shop":[0,15],"short":[4,6,12,13],"shorter":6,"shorthand":[6,13],"shot":2,"should":[0,2,3,6,8,9,12,13,15],"should_ingress_limit":0,"should_quit":0,"should_use_implicit_proof":9,"shout":15,"show":[2,3,13,15],"shown":[0,11],"shut":15,"side":[6,13,14],"sideband":[2,5,13],"sign":[6,8,9,12,13,15],"signal":[0,6,9,12,13,15],"signatur":[8,9,12,13,14,15],"signifi":12,"signific":8,"significantli":[6,9],"silent":13,"similar":[0,2,4,6,9,10,13,14],"simpl":[0,2,4,9,10,12,13,14,15],"simpler":[3,6,8,14],"simplest":[6,12],"simpli":[0,2,3,4,6,8,10,11,12,13,15],"simplic":12,"simplifi":0,"simplyequip":4,"simultan":[2,12],"sinc":[0,2,6,8,9,12,15],"singl":[0,2,3,6,8,9,12,13,14,15],"singular":12,"sit":[2,15],"site":[6,8,15],"situat":[2,4,6,8,12,13],"size":[0,2,3,6,9,12,13],"size_str":0,"skip":0,"sky":5,"slap":15,"slave":15,"sleep":[0,2,13],"slice":[0,15],"slightli":[0,2,15],"sloppi":15,"slottim":[6,13],"slow":[0,6,8,10,12,15],"slower":[6,9,12],"small":[0,2,6,8,9,12,14,15],"smaller":9,"smallest":2,"snippet":13,"snr":[0,9,13],"so":[0,2,4,6,7,8,9,10,11,12,13,14,15],"social":[2,15],"societi":15,"socket":[6,13,14,15],"soft":15,"softwar":[2,3,4,6,7,10,12,13,15],"solar":15,"sole":6,"solid":11,"solut":[12,13],"solv":[12,15],"some":[0,2,4,6,8,9,10,12,13,15],"some_remot":3,"someon":[2,6,13,15],"someth":[8,12,15],"somethign":0,"sometim":[4,6,10,15],"somewhat":2,"somewher":15,"soon":[3,9,13],"sort":[6,12,13],"soul":15,"sound":15,"soundmodem":6,"sourc":[0,2,4,5,8,9,12,14,15],"sovereign":[2,12,15],"sovereignli":15,"sovereignti":[5,14],"space":[0,2,4,8,12,14,15],"spam":[2,6,12,13],"spammi":13,"span":[6,8,12],"spawn":6,"spe":6,"speak":[11,15],"spec":12,"special":[10,12,13],"specif":[0,3,4,5,6,8,9,13,14,15],"specifi":[0,2,3,4,6,8,9,12,13],"spectrum":[6,12,15],"speed":[0,6,9,12,13,15],"sphere":15,"spinner":15,"spirit":10,"split":0,"sponsor":11,"spoof":15,"spread":[6,13],"spreadingfactor":6,"squelch":6,"ssh":[10,13],"ssid":6,"ssl":15,"stabil":[8,15],"stabl":[2,6,8,12,14],"stack":[0,2,8,9,10,12,13,14,15],"stage":12,"stai":[0,12,13,15],"stale":[8,9],"stale_grac":9,"stale_tim":9,"stamp":[6,9,13],"stanc":15,"stand":15,"standalon":[5,10],"standard":[3,4,6,10,12,13],"start":[0,3,4,5,6,8,9,10,12,13,15],"startup":[0,2,13],"stat":[3,9,13],"state":[0,8,15],"static":[2,3,6,9,15],"staticmethod":0,"station":6,"stationari":[8,13,15],"statist":[0,3,6,9,11],"stats_ignore_ident":3,"statu":[0,2,3,5,6,9,10,12,13,15],"stderr":13,"stdin":[6,13],"stdio":14,"stdout":[0,3,6,13],"steel":15,"stem":11,"step":[0,2,4,15],"stewardship":15,"still":[0,2,6,8,10,12,13,15],"stock":0,"stone":15,"stop":[9,14,15],"stopbit":[0,6,13],"storag":[2,3,6,10,12,13,15],"store":[0,3,5,9,10,12,13],"store_tru":0,"storm":15,"str":0,"straightforward":6,"strang":15,"stranger":15,"strangl":15,"strateg":8,"strategi":[5,6,9],"stream":[0,9,10,12,13,15],"stream_id":[0,9],"street":15,"strength":[9,14,15],"strict":15,"strictli":[6,12],"string":[0,9,15],"stringmessag":0,"strip":[3,15],"strong":[2,12,15],"stronger":2,"strongli":2,"struct":0,"structur":[0,5,8,9,12,14,15],"style":6,"sub":[0,6],"subclass":[0,9],"subcommand":3,"subdirectori":3,"subinterfac":6,"subject":[2,7,13,14,15],"sublicens":7,"subnet":[2,8],"subscrib":[2,13,15],"subsequ":[0,12],"subset":6,"subsid":6,"substanti":7,"substrat":15,"subtl":15,"subtli":15,"succe":[2,13],"succeed":[0,9],"succesfulli":8,"success":[2,6],"successful":9,"successfulli":[0,9,12],"suddenli":15,"sudo":[2,13],"suffer":8,"suffic":12,"suffici":[2,6,12,13,14],"suffix":0,"suit":[2,4,10,12,13,15],"suitabl":[0,2,6,8,12,13,14],"sum":15,"super":0,"supersed":6,"suppli":[0,6,9,12,13,14],"supplier":2,"support":[0,2,3,5,6,8,9,10,12,13,14],"sure":[0,2,3,4,13],"surfac":15,"surround":15,"surveil":[12,15],"surviv":[2,12,13,15],"sustain":15,"switch":[4,6,8,12,13,15],"sx1262":4,"sx1268":4,"sx1276":4,"sx1278":4,"sx1280":4,"sy":0,"symlink":13,"symmetr":[9,12],"synchron":[10,15],"syntax":5,"synthet":15,"system":[0,2,3,4,5,6,7,8,9,10,11,12,14],"systemctl":13,"systemd":13,"t":[0,2,6,8,9,12,13,15],"tabl":[2,6,8,12,13,15],"tablet":2,"tackl":10,"tag":[3,9],"tail":6,"tailor":12,"take":[0,2,6,10,12,13,14,15],"taken":[0,3,12,13,15],"talk":[10,15],"tamper":15,"tangerin":0,"tap":[4,15],"tar":3,"target":[0,2,3,6,10,13,15],"target_hash":9,"target_host":6,"target_port":[6,13],"task":13,"taught":15,"tcp":[2,4,5,8,12,13,14,15],"tcpclientinterfac":[2,4,6],"tcpinterfac":13,"tcpserverinterfac":[2,6],"tdata":0,"teach":[13,15],"teahous":11,"teardown":[0,9],"teardown_reason":0,"tech":15,"technician":15,"technologi":[2,8,15],"teffect":0,"telco":15,"telecom":15,"telemetri":[10,11],"telephon":5,"telephoni":10,"televis":15,"tell":[0,2,6,8,15],"temperatur":12,"templat":5,"temporari":[2,6,13],"temporarili":[6,8],"ten":12,"tenanc":15,"tenant":15,"tend":6,"tenuou":15,"term":[2,6,8,12,15],"termin":[0,2,3,9,10,13],"terminologi":[8,12],"termux":2,"terrifi":15,"test":[2,3,10,12,13,15],"testnet":13,"tether":15,"text":[0,3,10,12,13],"textur":15,"tfile":0,"tgz":13,"than":[0,2,6,8,9,10,11,12,13,14,15],"thank":3,"thei":[0,2,3,6,8,9,10,12,13,15],"them":[0,2,4,6,8,10,11,12,13,14,15],"theme":3,"themselv":[6,8,13],"theori":15,"thereaft":12,"therefor":[2,12,14,15],"thi":[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15],"thing":[0,2,8,10],"think":[2,4,8,11,12,15],"those":[2,8,12,13,15],"though":[2,6,8,12],"thought":15,"thousand":[2,6,12,13,15],"thread":0,"threat":13,"three":[2,12,15],"threshold":6,"throough":6,"throttl":[6,8],"through":[0,2,3,4,5,6,8,9,10,12,13,14],"throughout":[8,12],"throughput":[9,10,12,14],"thrown":[9,15],"thu":[8,9,12],"ti":[0,8,12],"tighten":15,"tightrop":15,"tild":13,"time":[0,2,3,4,5,6,8,9,10,11,12,13],"time_since_last":0,"timeout":[0,9,13,15],"timeoutarg":0,"timestamp":[0,12,15],"timestr":0,"tion":6,"tl":15,"tmp":13,"tnc":[4,6,9,10,13,14],"to_fil":9,"todai":[12,15],"togeth":[4,8,12,13,15],"toggl":13,"token":[9,12,14],"tokyo":15,"told":15,"toler":6,"tomorrow":15,"too":[0,8,15],"tool":[2,4,5,8,10,12,13,14],"toolkit":[2,8],"top":[10,12,13,15],"topic":[2,12],"topographi":[2,8,12,15],"topologi":[2,6,8,12,14,15],"torn":[9,13],"tort":7,"tortur":15,"total":[3,9,12,13,14],"total_s":0,"touch":15,"toward":[0,6,12],"tower":15,"track":[3,9,13,15],"track_phy_stat":9,"trade":[8,12],"tradit":[8,12,15],"traffic":[0,2,6,8,9,12,13,15],"train":[7,15],"transceiv":[2,4,6,10,12,14],"transfer":[0,3,9,12,13,14],"transfer_s":0,"transform":14,"transient":15,"transistor":15,"translat":8,"transmiss":[2,6,9,12,15],"transmit":[0,6,12,15],"transmitt":15,"transpar":[3,4,6,8,12,13],"transport":[0,2,5,6,9,10,13,14,15],"transport_en":9,"transport_ident":13,"travel":15,"travers":[2,9,12,15],"treat":[8,12,15],"tree":3,"tremend":8,"tri":0,"trip":[0,9,13],"trivial":[12,14],"troubl":15,"true":[0,2,6,9,13,15],"truli":[4,12,15],"truncat":[9,12,13],"truncated_hash":9,"truncated_hashlength":[0,9],"trust":[2,5,6,8,12,13],"trustless":[5,12,14],"trustworthi":[8,13],"try":[0,3,5,6,8,9,10],"ttime":0,"ttransfer":0,"ttyacm0":6,"ttyusb0":[0,6,13],"ttyusb1":6,"ttyusb2":6,"tun":[4,6],"tun0":6,"tune":6,"tunnel":[2,6,8,12,14,15],"tupl":9,"turn":[0,6,13,15],"turnaround":6,"tutori":2,"two":[0,3,4,6,8,9,12,13],"tx":[6,13],"txb":0,"txp":13,"txpower":6,"txt":[3,13],"txtail":[6,13],"type":[0,2,3,5,6,8,9,13],"typeerror":9,"typic":[3,6,8,12],"tyrant":15,"u":[12,13,15],"ubiqu":4,"ubuntu":[5,13],"uci":2,"udp":[5,8,12,13,14],"udpinterfac":6,"uhf":[13,14],"ui":[10,15],"ultim":[2,12,15],"umsgpack":0,"unblackhol":13,"unblock":13,"unbound":15,"uncar":15,"uncencrypt":0,"uncentraliz":5,"unchang":8,"uncoordin":[2,15],"under":[9,11,12,13,14,15],"underli":[0,6,8,9,12,14],"undermin":15,"underneath":15,"undersea":15,"understand":[2,5,6,8,9,13,14,15],"understood":15,"underwai":2,"underwear":15,"unencrypt":[0,9,12],"unequivoc":12,"unexplor":8,"unforg":[8,14],"unfortun":2,"unicod":3,"unicode_icon":3,"unidentifi":0,"unidirect":0,"unifi":[8,12],"uninterest":0,"uniqu":[0,6,8,9,10,12,13,14,15],"unit":[0,2,9,13],"univers":15,"unknown":[0,6,8,9,12,13],"unlearn":15,"unless":[0,2,6,8,9,12],"unlicens":12,"unlik":12,"unlock":13,"unorganis":8,"unpack":[0,9],"unpackb":0,"unpaid":15,"unplug":[13,15],"unrecover":[0,13],"unreli":6,"unset":12,"unsupport":9,"until":[0,2,6,9],"untrust":13,"untrustworthi":15,"unus":13,"unwant":[12,13],"up":[0,2,4,6,8,9,10,12,13,14,15],"updat":[0,2,9,12,13,15],"upgrad":[2,9,12],"upkeep":6,"upload":3,"upon":[0,6,12],"upset":0,"upstream":[3,13],"uptim":15,"urandom":[12,14],"urgent":15,"uri":10,"url":[3,13,15],"us":[0,4,5,6,7,8,9,15],"usabl":[6,12],"usag":[3,5,6,9,10,11,13],"usb":[4,12,13],"useabl":12,"useless":15,"user":[0,2,3,6,8,10,12,13,14,15],"user_input":0,"userland":14,"usernam":15,"usernameher":13,"usr":[6,13],"usual":[2,6,8],"utf":0,"util":[0,4,5,6,12,15],"utilis":[0,2,6,9,12,13,14],"ux":10,"v":[3,5,13],"v1":3,"valid":[0,2,3,6,8,9,12,13,15],"valu":[0,2,6,9,12,13,15],"valuabl":[4,11,15],"valueerror":[0,9],"vanish":15,"vanishingli":15,"var":3,"vari":[2,6,12,13],"variabl":[0,2,3,9],"varieti":[6,10,12,13,14],"variou":[0,2,6,8,10,12,13,14],"vast":[2,12,15],"vastli":8,"ve":8,"vehicl":6,"vendor":[0,4,14],"ventur":15,"verbos":[3,9,13],"veri":[2,4,6,8,9,10,11,12,13,14,15],"verif":[8,9,10,12,13,15],"verifi":[0,2,3,6,8,9,12,13,14,15],"versa":14,"version":[0,2,3,9,12,13,15],"vhf":[12,14],"vi":3,"via":[2,3,4,6,8,10,11,12,13,14,15],"viabl":8,"vice":14,"video":15,"view":[2,3,6,11,12,13],"viewabl":3,"vim":3,"violat":6,"virtual":[2,4,6,8,12,13,14],"virtuou":15,"visibl":[0,3,6],"visual":[3,15],"vital":15,"voic":[10,11,15],"voicemail":10,"volunt":2,"voluntari":2,"vouch":15,"vpn":[8,15],"vport":6,"vulner":8,"vv":13,"vvv":2,"w":[3,13],"wa":[0,3,4,6,8,9,12,13,14,15],"wai":[0,3,5,6,8,9,10,12,13,15],"wait":[0,2,6,10,12,13,15],"walk":15,"wall":15,"wander":15,"want":[0,2,3,6,8,10,11,12,13,15],"wantedbi":13,"warn":13,"warrant":14,"warranti":7,"wash":15,"wast":[6,8,11,15],"wave":[4,15],"wb":0,"we":[0,2,4,6,8,11,12,15],"weaken":12,"weapon":15,"wear":15,"weather":15,"weav":15,"web":[2,10,15],"websit":[2,6,15],"weigh":15,"weight":[13,15],"well":[4,6,8,9,10,11,12,13,14,15],"went":0,"were":[0,10,15],"what":[0,2,5,6,8,9,12,13,15],"whatev":[8,9,12],"wheel":2,"when":[0,2,3,4,6,8,9,10,12,13,15],"whenev":[0,9,12],"where":[2,3,4,5,6,8,9,10,12,13,15],"whereupon":12,"wherev":15,"whether":[0,2,6,7,8,9,12,15],"which":[0,2,3,6,7,8,9,10,12,13,14,15],"while":[0,2,3,4,6,8,9,10,12,13,14,15],"whim":15,"whitelist":12,"whl":2,"who":[2,6,8,12,13,15],"whole":[13,15],"whom":[7,15],"whose":[13,15],"why":15,"wide":[2,3,4,6,8,10,12,13,14],"wider":[2,6,8,12,13],"wifi":[2,5,6,8,10,12,13,14,15],"wikipedia":10,"wild":[3,13,15],"wildcard":0,"wilder":15,"willing":13,"window":[5,6,10,13],"windowsil":15,"wipe":13,"wire":[4,5,6,10,14,15],"wireless":[4,8],"wirelessli":6,"wish":[0,6,12,13,15],"within":[0,2,3,6,8,9,12,15],"without":[0,2,4,6,7,8,10,12,13,14,15],"wlan0":6,"wolf":4,"won":0,"word":[2,15],"work":[2,3,4,5,6,8,10,12,13,14],"workabl":8,"workflow":3,"world":[2,4,6,8,10,13,14,15],"worri":8,"worth":2,"would":[3,6,9,10,12,13,15],"wrap":3,"write":[0,2,3,4,6,9,10,12,13,15],"write_timeout":0,"writer":[0,9],"written":[0,12,14,15],"wrong":[0,2,6,15],"wrote":[0,6],"x":[9,12,13],"x25519":[12,14],"xenon":0,"xonxoff":0,"y":[0,3],"ye":[2,3,6,12,13,15],"year":[12,15],"yet":[0,6,12,15],"yggdrasil":6,"yi":0,"you":[0,2,3,4,5,6,8,9,10,11,12,13,14,15],"your":[0,3,4,5,6,8,9,11,12,14,15],"yourself":[2,12,13,14,15],"z":0,"zen":[5,14],"zero":[5,6,9,10,14],"zi":0,"zim":10,"zip":3,"zone":12,"zshrc":2},"titles":["Code Examples","An Explanation of Reticulum for Human Beings","Getting Started Fast","Using Git Over Reticulum","Communications Hardware","Reticulum Network Stack Manual","Configuring Interfaces","Reticulum License","Building Networks","API Reference","Programs Using Reticulum","Support Reticulum","Understanding Reticulum","Using Reticulum on Your System","What is Reticulum?","Zen of Reticulum"],"titleterms":{"0":4,"1":4,"25":6,"A":15,"Beings":1,"For":15,"In":15,"Not":[8,15],"Of":[5,15],"Or":15,"The":[3,12,13,15],"To":15,"With":2,"abil":15,"access":12,"ad":2,"address":[8,15],"agenc":15,"an":1,"anchor":15,"android":2,"announc":[0,6,12,15],"api":9,"architectur":15,"arm64":2,"auto":6,"autom":13,"ax":6,"backbon":[2,6],"bandwidth":15,"base":[2,4],"basic":12,"beam":4,"blackhol":13,"board":4,"bookworm":2,"bootstrap":2,"broadcast":0,"buffer":0,"build":[2,8],"byte":15,"can":14,"carrier":15,"center":15,"channel":0,"chat":10,"client":[6,10],"cloud":15,"code":[0,12],"columba":10,"combin":4,"common":6,"commun":4,"concept":8,"conceptu":12,"configur":[6,13],"connect":[2,6,8,10],"consider":[6,8],"content":5,"contribut":2,"control":6,"cost":15,"creat":[2,4,12],"cryptograph":12,"current":[12,14],"custom":[0,2,3,6],"data":13,"death":15,"debian":2,"decentr":15,"deck":4,"depend":2,"design":15,"destin":[6,8,12],"detail":12,"develop":2,"devic":[4,14],"disconnect":15,"discov":13,"discover":6,"discoveri":6,"distribut":2,"doe":14,"domain":15,"donat":11,"echo":[0,4],"emerg":15,"enabl":6,"encrypt":15,"entrypoint":2,"environ":15,"establish":12,"ethernet":4,"ethic":15,"exampl":[0,6],"exist":15,"explan":1,"fabric":15,"fallaci":15,"fast":2,"featur":15,"feedback":11,"filesync":10,"filetransf":0,"find":2,"finish":15,"fix":13,"flow":15,"format":[3,12],"forward":15,"from":15,"function":12,"further":12,"futur":12,"get":[2,12],"git":3,"global":2,"goal":12,"grade":15,"hardwar":4,"harm":15,"health":2,"heltec":4,"heterogen":8,"highlight":3,"host":2,"hostil":15,"human":[1,15],"i":[14,15],"i2p":6,"ident":[12,15],"identif":0,"illus":15,"implement":14,"implic":12,"improv":13,"includ":[2,13],"independ":15,"indic":5,"infrastructur":[2,15],"instal":[2,4],"instanc":[2,8],"interact":10,"interfac":[0,2,6,10,12,13,14,15],"internet":2,"introduct":12,"introductori":8,"ip":15,"issu":2,"j":10,"kei":12,"kiss":6,"liber":15,"licens":7,"lilygo":4,"limit":[6,15],"line":4,"link":[0,12],"list":13,"listen":6,"local":13,"lora":6,"lora32":4,"lunar":2,"lxmf":10,"lxmfy":10,"lxst":10,"maco":2,"manag":[3,13],"manual":5,"mechan":12,"medium":15,"merit":15,"meshchat":10,"meshchatx":10,"micron":10,"minim":0,"mix":2,"mode":6,"modem":4,"modul":10,"motiv":12,"multi":6,"name":[12,13,15],"network":[2,3,5,8,10,12],"new":6,"node":[8,10,12,15],"nomad":[3,10,15],"note":2,"offer":14,"open":15,"opencom":4,"openwrt":2,"option":6,"over":[2,3],"overview":[8,12],"packet":[4,12],"page":[3,10],"paramet":6,"parser":10,"pattern":15,"person":[2,15],"phone":10,"physic":15,"pi":2,"pipe":6,"platform":2,"port":13,"portabl":15,"post":15,"power":15,"presenc":15,"preserv":15,"primit":12,"principl":15,"prioritis":12,"program":[2,10,13],"propag":12,"protocol":[10,12,15],"provid":11,"public":[2,12,15],"publish":13,"pure":2,"python":2,"radio":[2,4],"rak4631":4,"raspberri":2,"rate":6,"rbrowser":10,"reach":12,"refer":[9,12,14],"relai":10,"releas":3,"remot":[6,10,13],"repositori":3,"request":0,"resolv":2,"resourc":[10,12],"respons":[0,2],"ret":2,"retibb":10,"reticulum":[1,2,3,4,5,7,10,11,12,13,14,15],"retipedia":10,"risc":2,"rn":10,"rncp":13,"rngit":[3,13],"rnid":13,"rnmon":10,"rnode":[4,6],"rnodeconf":13,"rnpath":13,"rnprobe":13,"rnsd":13,"rnsh":13,"rnstatu":13,"rnx":13,"roam":15,"rrc":10,"rule":12,"scarciti":15,"secur":6,"serial":[4,6,13],"serv":3,"server":6,"servic":13,"setup":12,"shell":10,"sideband":10,"sky":15,"sourc":13,"sovereignti":15,"specif":[2,12],"stack":5,"standalon":2,"start":2,"statu":14,"store":15,"strategi":2,"structur":3,"support":[4,11],"suprem":4,"syntax":3,"system":[13,15],"systemwid":13,"t":4,"t114":4,"t3s3":4,"tabl":5,"tcp":6,"telephon":10,"templat":3,"through":15,"time":15,"tool":15,"transport":[8,12],"trust":15,"trustless":8,"try":2,"type":[4,12,14],"ubuntu":2,"udp":6,"uncentraliz":15,"understand":12,"unsign":4,"us":[2,3,10,12,13,14],"usag":[4,12],"userspac":13,"util":[2,3,10,13],"v":2,"v1":4,"v2":4,"v3":4,"v4":4,"wai":2,"what":14,"where":14,"wifi":4,"window":2,"wire":12,"work":15,"x":4,"xl":4,"your":[2,13],"zen":15,"zero":15}})
\ No newline at end of file
diff --git a/docs/manual/software.html b/docs/manual/software.html
index 0df5acc5..f6c00248 100644
--- a/docs/manual/software.html
+++ b/docs/manual/software.html
@@ -7,7 +7,7 @@
<link rel="prefetch" href="_static/rns_logo_512.png" as="image">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25.dev1 -->
- <title>Programs Using Reticulum - Reticulum Network Stack 1.2.1 documentation</title>
+ <title>Programs Using Reticulum - Reticulum Network Stack 1.2.2 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
@@ -180,7 +180,7 @@
</label>
</div>
<div class="header-center">
- <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.1 documentation</div></a>
+ <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.2 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
@@ -204,7 +204,7 @@
<img class="sidebar-logo" src="_static/rns_logo_512.png" alt="Logo"/>
</div>
- <span class="sidebar-brand-text">Reticulum Network Stack 1.2.1 documentation</span>
+ <span class="sidebar-brand-text">Reticulum Network Stack 1.2.2 documentation</span>
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
@@ -533,7 +533,7 @@ using LXMF.</p>
</aside>
</div>
-</div><script src="_static/documentation_options.js?v=ca842793"></script>
+</div><script src="_static/documentation_options.js?v=fd7cadf9"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
diff --git a/docs/manual/support.html b/docs/manual/support.html
index bb970e85..59246699 100644
--- a/docs/manual/support.html
+++ b/docs/manual/support.html
@@ -7,7 +7,7 @@
<link rel="prefetch" href="_static/rns_logo_512.png" as="image">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25.dev1 -->
- <title>Support Reticulum - Reticulum Network Stack 1.2.1 documentation</title>
+ <title>Support Reticulum - Reticulum Network Stack 1.2.2 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
@@ -180,7 +180,7 @@
</label>
</div>
<div class="header-center">
- <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.1 documentation</div></a>
+ <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.2 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
@@ -204,7 +204,7 @@
<img class="sidebar-logo" src="_static/rns_logo_512.png" alt="Logo"/>
</div>
- <span class="sidebar-brand-text">Reticulum Network Stack 1.2.1 documentation</span>
+ <span class="sidebar-brand-text">Reticulum Network Stack 1.2.2 documentation</span>
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
@@ -381,7 +381,7 @@ circumstances, so we rely on old-fashioned human feedback.</p>
</aside>
</div>
-</div><script src="_static/documentation_options.js?v=ca842793"></script>
+</div><script src="_static/documentation_options.js?v=fd7cadf9"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
diff --git a/docs/manual/understanding.html b/docs/manual/understanding.html
index 88e820a5..142b6955 100644
--- a/docs/manual/understanding.html
+++ b/docs/manual/understanding.html
@@ -7,7 +7,7 @@
<link rel="prefetch" href="_static/rns_logo_512.png" as="image">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25.dev1 -->
- <title>Understanding Reticulum - Reticulum Network Stack 1.2.1 documentation</title>
+ <title>Understanding Reticulum - Reticulum Network Stack 1.2.2 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
@@ -180,7 +180,7 @@
</label>
</div>
<div class="header-center">
- <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.1 documentation</div></a>
+ <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.2 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
@@ -204,7 +204,7 @@
<img class="sidebar-logo" src="_static/rns_logo_512.png" alt="Logo"/>
</div>
- <span class="sidebar-brand-text">Reticulum Network Stack 1.2.1 documentation</span>
+ <span class="sidebar-brand-text">Reticulum Network Stack 1.2.2 documentation</span>
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
@@ -1336,7 +1336,7 @@ those risks are acceptable to you.</p>
</aside>
</div>
-</div><script src="_static/documentation_options.js?v=ca842793"></script>
+</div><script src="_static/documentation_options.js?v=fd7cadf9"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
diff --git a/docs/manual/using.html b/docs/manual/using.html
index 87a8f116..236a9e7e 100644
--- a/docs/manual/using.html
+++ b/docs/manual/using.html
@@ -7,7 +7,7 @@
<link rel="prefetch" href="_static/rns_logo_512.png" as="image">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25.dev1 -->
- <title>Using Reticulum on Your System - Reticulum Network Stack 1.2.1 documentation</title>
+ <title>Using Reticulum on Your System - Reticulum Network Stack 1.2.2 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
@@ -180,7 +180,7 @@
</label>
</div>
<div class="header-center">
- <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.1 documentation</div></a>
+ <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.2 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
@@ -204,7 +204,7 @@
<img class="sidebar-logo" src="_static/rns_logo_512.png" alt="Logo"/>
</div>
- <span class="sidebar-brand-text">Reticulum Network Stack 1.2.1 documentation</span>
+ <span class="sidebar-brand-text">Reticulum Network Stack 1.2.2 documentation</span>
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
@@ -222,6 +222,7 @@
<li class="toctree-l1"><a class="reference internal" href="hardware.html">Communications Hardware</a></li>
<li class="toctree-l1"><a class="reference internal" href="interfaces.html">Configuring Interfaces</a></li>
<li class="toctree-l1"><a class="reference internal" href="networks.html">Building Networks</a></li>
+<li class="toctree-l1"><a class="reference internal" href="git.html">Using Git Over Reticulum</a></li>
<li class="toctree-l1"><a class="reference internal" href="support.html">Support Reticulum</a></li>
<li class="toctree-l1"><a class="reference internal" href="examples.html">Code Examples</a></li>
<li class="toctree-l1"><a class="reference internal" href="license.html">Reticulum License</a></li>
@@ -852,198 +853,14 @@ options:
</section>
<section id="the-rngit-utility">
<h3>The rngit Utility<a class="headerlink" href="#the-rngit-utility" title="Link to this heading">¶</a></h3>
-<p>The <code class="docutils literal notranslate"><span class="pre">rngit</span></code> utility provides full Git repository hosting and interaction over Reticulum. It allows you to host Git repositories on Reticulum nodes, and to interact with remote repositories using standard Git commands through the <code class="docutils literal notranslate"><span class="pre">rns://</span></code> URL scheme.</p>
-<p>The system consists of two parts: The <code class="docutils literal notranslate"><span class="pre">rngit</span></code> node that hosts repositories, and the <code class="docutils literal notranslate"><span class="pre">git-remote-rns</span></code> helper that enables Git to communicate with rngit nodes. As soon as you have RNS installed on your system, you can transparently use Git with Reticulum-hosted repositories just like any other type of remote. Git over Reticulum uses URLs in the following format: <code class="docutils literal notranslate"><span class="pre">rns://DESTINATION_HASH/group/repo</span></code>.</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">rngit</span></code> utility provides full Git repository hosting and interaction over Reticulum, as well as many other useful features for software development, collaboration and publishing. It allows you to host Git repositories on Reticulum nodes, interact with remote repositories using standard Git commands through the <code class="docutils literal notranslate"><span class="pre">rns://</span></code> URL scheme, and to publish software releases.</p>
+<p>The system consists of two parts: The <code class="docutils literal notranslate"><span class="pre">rngit</span></code> node that hosts and manages repositories, and the <code class="docutils literal notranslate"><span class="pre">git-remote-rns</span></code> helper that enables Git to communicate with rngit nodes. As soon as you have RNS installed on your system, you can transparently use Git with Reticulum-hosted repositories just like any other type of remote. Git over Reticulum uses URLs in the following format: <code class="docutils literal notranslate"><span class="pre">rns://DESTINATION_HASH/group/repo</span></code>.</p>
<p>If you set a branch to track a Reticulum remote as the default upstream, you can simply use <code class="docutils literal notranslate"><span class="pre">git</span></code> as you normally would; all commands work transparently and as expected.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p><strong>The rngit program is a new addition to RNS!</strong> This functionality was introduced in RNS 1.2.0. While great care has been taken to design a secure, but highly configurable and flexible permission system for allowing many users to interact with many different repositories on a single node, <code class="docutils literal notranslate"><span class="pre">rngit</span></code> has not been tested extensively in the wild! Be careful when hosting repositories, especially if they are public or semi-public.</p>
</div>
-<p><strong>Usage Examples</strong></p>
-<p>Run <code class="docutils literal notranslate"><span class="pre">rngit</span></code> to start a repository node:</p>
-<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ rngit
-
-[Notice] Starting Reticulum Git Node...
-[Notice] Reticulum Git Node listening on <0d7334d411d00120cbad24edf355fdd2>
-</pre></div>
-</div>
-<p>On the first run, <code class="docutils literal notranslate"><span class="pre">rngit</span></code> will create a default configuration file. You will then need to edit this, to point to your repository locations, configure access permissions, and perform any other necessary configuration.</p>
-<p>View your identity and destination hashes:</p>
-<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ rngit --print-identity
-
-Git Peer Identity : <959e10e5efc1bd9d97a4083babe51dea>
-Repository Node Identity : <153cb870b4665b8c1c348896292b0bad>
-Repositories Destination : <0d7334d411d00120cbad24edf355fdd2>
-</pre></div>
-</div>
-<p>If the page server is enabled, the output will also include the Nomad Network destination hash.</p>
-<p>You can run <code class="docutils literal notranslate"><span class="pre">rngit</span></code> in service mode with logging to file:</p>
-<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ rngit -s
-</pre></div>
-</div>
-<p>Clone a repository from a remote <code class="docutils literal notranslate"><span class="pre">rngit</span></code> node:</p>
-<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ git clone rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
-</pre></div>
-</div>
-<p>Add a Reticulum remote to an existing repository:</p>
-<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ git remote add some_remote rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
-</pre></div>
-</div>
-<p>Push changes to the Reticulum remote:</p>
-<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ git push some_remote master
-</pre></div>
-</div>
-<p>Get changes from a remote repository:</p>
-<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ git pull rns_remote master
-</pre></div>
-</div>
-<p><strong>Repository Structure</strong></p>
-<p>The <code class="docutils literal notranslate"><span class="pre">rngit</span></code> node organizes repositories into groups. Each group is a directory containing bare Git repositories. The repository path format is <code class="docutils literal notranslate"><span class="pre">group_name/repo_name</span></code>. For example, a repository at <code class="docutils literal notranslate"><span class="pre">/var/git/public/myrepo</span></code> would be accessible as <code class="docutils literal notranslate"><span class="pre">public/myrepo</span></code> via the URL <code class="docutils literal notranslate"><span class="pre">rns://DESTINATION_HASH/public/myrepo</span></code>.</p>
-<p><strong>Configuration</strong></p>
-<p>The <code class="docutils literal notranslate"><span class="pre">rngit</span></code> node configuration file is located at <code class="docutils literal notranslate"><span class="pre">~/.rngit/config</span></code> (or <code class="docutils literal notranslate"><span class="pre">/etc/rngit/config</span></code> for system-wide installations). The default configuration includes:</p>
-<ul class="simple">
-<li><p>Repository group paths defining where to find bare repositories</p></li>
-<li><p>Access permissions for groups and individual repositories</p></li>
-<li><p>Announce intervals for network visibility</p></li>
-<li><p>Optional statistics recording for repository activity</p></li>
-</ul>
-<p>Access permissions can be configured at the group level in the config file, or per-repository using <code class="docutils literal notranslate"><span class="pre">.allowed</span></code> files. Permissions use the format <code class="docutils literal notranslate"><span class="pre">permission:target</span></code> where permission is <code class="docutils literal notranslate"><span class="pre">r</span></code> (read), <code class="docutils literal notranslate"><span class="pre">w</span></code> (write), <code class="docutils literal notranslate"><span class="pre">rw</span></code> (read/write), <code class="docutils literal notranslate"><span class="pre">c</span></code> (create) or <code class="docutils literal notranslate"><span class="pre">s</span></code> (stats) and target is <code class="docutils literal notranslate"><span class="pre">all</span></code>, <code class="docutils literal notranslate"><span class="pre">none</span></code>, or a specific identity hash.</p>
-<p>The <code class="docutils literal notranslate"><span class="pre">s</span></code> (stats) permission allows viewing repository activity statistics, including views, fetches and pushes over time. To enable statistics recording, set <code class="docutils literal notranslate"><span class="pre">record_stats</span> <span class="pre">=</span> <span class="pre">yes</span></code> in the <code class="docutils literal notranslate"><span class="pre">[rngit]</span></code> section of the configuration file. You can also exclude specific identities from statistics by adding their hashes to <code class="docutils literal notranslate"><span class="pre">stats_ignore_identities</span></code>.</p>
-<p>Repository-specific <code class="docutils literal notranslate"><span class="pre">.allowed</span></code> files can be static text files or executable scripts that output permission rules to stdout. A <code class="docutils literal notranslate"><span class="pre">group.allowed</span></code> file in a repository group directory applies to all repositories within that group.</p>
-<p><strong>All Command-Line Options (rngit)</strong></p>
-<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>usage: rngit.py [-h] [--config CONFIG] [--rnsconfig RNSCONFIG] [-s] [-i] [-v]
- [-q] [--version]
-
-Reticulum Git Repository Node
-
-options:
- -h, --help show this help message and exit
- --config CONFIG path to alternative config directory
- --rnsconfig RNSCONFIG
- path to alternative Reticulum config directory
- -p, --print-identity print identity and destination info and exit
- -s, --service rngit is running as a service and should log to file
- -i, --interactive drop into interactive shell after initialisation
- -v, --verbose increase verbosity
- -q, --quiet decrease verbosity
- --version show program's version number and exit
-</pre></div>
-</div>
-<p><strong>All Command-Line Options (git-remote-rns)</strong></p>
-<p>The <code class="docutils literal notranslate"><span class="pre">git-remote-rns</span></code> helper is automatically invoked by Git when interacting with <code class="docutils literal notranslate"><span class="pre">rns://</span></code> URLs. It is not typically run directly by users, but accepts the following environment variables for configuration:</p>
-<ul class="simple">
-<li><p><code class="docutils literal notranslate"><span class="pre">RNGIT_CONFIG</span></code> - Path to alternative client configuration directory</p></li>
-<li><p><code class="docutils literal notranslate"><span class="pre">RNS_CONFIG</span></code> - Path to alternative Reticulum configuration directory</p></li>
-</ul>
-<p>The client configuration file is located at <code class="docutils literal notranslate"><span class="pre">~/.rngit/client_config</span></code> and allows adjusting parameters such as the reference batch size for transfers.</p>
-<p><strong>Serving Pages Over Nomad Network</strong></p>
-<p>In addition to providing Git repository access via the Git remote helper protocol, <code class="docutils literal notranslate"><span class="pre">rngit</span></code> can also run a <a class="reference external" href="https://github.com/markqvist/nomadnet">Nomad Network</a> compatible page node. This allows users to browse repository information, view file contents, inspect commit history and access repository statistics through any Nomad Network client.</p>
-<p>When enabled, the page node provides a complete interface to your repositories, with automatic Markdown to Micron conversion, syntax-highlighted code browsing, and detailed commit, diff and statistics views.</p>
-<p><strong>Enabling the Git Page Node</strong></p>
-<p>To enable the page node, add the following to your <code class="docutils literal notranslate"><span class="pre">~/.rngit/config</span></code> file:</p>
-<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>[pages]
-serve_nomadnet = yes
-</pre></div>
-</div>
-<p>When the page node is enabled, <code class="docutils literal notranslate"><span class="pre">rngit</span></code> will listen on a Nomad Network node destination in addition to the Git repository destination. You can view the destination hash by running:</p>
-<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ rngit --print-identity
-
-Git Peer Identity : <959e10e5efc1bd9d97a4083babe51dea>
-Repository Node Identity : <153cb870b4665b8c1c348896292b0bad>
-Repositories Destination : <0d7334d411d00120cbad24edf355fdd2>
-Nomad Network Destination : <50824b711717f97c2fb1166ceddd5ea9>
-</pre></div>
-</div>
-<p><strong>Accessing Repository Pages</strong></p>
-<p>Once the page server is running, you can access it from any Nomad Network client by connecting to the Nomad Network destination. The page node provides the following views:</p>
-<ul class="simple">
-<li><p><strong>Front Page</strong> - Lists all repository groups accessible to your identity</p></li>
-<li><p><strong>Group Page</strong> - Shows all repositories within a group</p></li>
-<li><p><strong>Repository Page</strong> - Displays repository overview, description and README</p></li>
-<li><p><strong>File Browser</strong> - Browse directory trees and view file contents</p></li>
-<li><p><strong>Commits View</strong> - View commit history with pagination</p></li>
-<li><p><strong>Commit Details</strong> - Detailed commit information with file changes and diffs</p></li>
-<li><p><strong>Refs View</strong> - List branches and tags</p></li>
-<li><p><strong>Statistics</strong> - Activity charts showing views, fetches and pushes over time</p></li>
-</ul>
-<p>All pages respect the same permission system used for Git access. If an identity does not have read access to a repository, they will not be able to view its pages.</p>
-<p><strong>Syntax Highlighting</strong></p>
-<p>If the <code class="docutils literal notranslate"><span class="pre">pygments</span></code> Python module is installed on your system, the page server will automatically apply syntax highlighting to code files. The highlighting supports a wide range of programming languages and uses a color theme optimized for terminal display.</p>
-<p>To enable syntax highlighting, install pygments:</p>
-<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>pip install pygments
-</pre></div>
-</div>
-<p><strong>Markdown & Micron Support</strong></p>
-<p>README files and other Markdown documents are automatically converted to Micron markup for display in Nomad Network clients. You can also write your README files directly in Micron, in which case they will display and render as such in any Nomad Network client. The file browser also supports viewing both rendered and raw Markdown and Micron documents.</p>
-<p>Code blocks in Markdown can include language hints for syntax highlighting:</p>
-<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>```python
-def hello_world():
- print("Hello, Reticulum!")
-```
-</pre></div>
-</div>
-<p><strong>Customizing Templates</strong></p>
-<p>The page server uses a template system that allows complete customization of the generated pages. Templates are stored in the <code class="docutils literal notranslate"><span class="pre">~/.rngit/templates/</span></code> directory as Micron files.</p>
-<p>The following template files are supported:</p>
-<ul class="simple">
-<li><p><code class="docutils literal notranslate"><span class="pre">base.mu</span></code> - Base template wrapping all pages (must include <code class="docutils literal notranslate"><span class="pre">{PAGE_CONTENT}</span></code>)</p></li>
-<li><p><code class="docutils literal notranslate"><span class="pre">front.mu</span></code> - Front page listing all groups</p></li>
-<li><p><code class="docutils literal notranslate"><span class="pre">group.mu</span></code> - Group page listing repositories</p></li>
-<li><p><code class="docutils literal notranslate"><span class="pre">repo.mu</span></code> - Repository overview page</p></li>
-<li><p><code class="docutils literal notranslate"><span class="pre">tree.mu</span></code> - File browser pages</p></li>
-<li><p><code class="docutils literal notranslate"><span class="pre">blob.mu</span></code> - File content display</p></li>
-<li><p><code class="docutils literal notranslate"><span class="pre">commits.mu</span></code> - Commit history listing</p></li>
-<li><p><code class="docutils literal notranslate"><span class="pre">commit.mu</span></code> - Individual commit detail page</p></li>
-<li><p><code class="docutils literal notranslate"><span class="pre">refs.mu</span></code> - Branches and tags listing</p></li>
-<li><p><code class="docutils literal notranslate"><span class="pre">stats.mu</span></code> - Statistics page</p></li>
-</ul>
-<p>Templates can include the following variables:</p>
-<ul class="simple">
-<li><p><code class="docutils literal notranslate"><span class="pre">{PAGE_CONTENT}</span></code> - The main content of the page (required)</p></li>
-<li><p><code class="docutils literal notranslate"><span class="pre">{NODE_NAME}</span></code> - The configured node name</p></li>
-<li><p><code class="docutils literal notranslate"><span class="pre">{NAVIGATION}</span></code> - Breadcrumb navigation links</p></li>
-<li><p><code class="docutils literal notranslate"><span class="pre">{VERSION}</span></code> - The rngit version number</p></li>
-<li><p><code class="docutils literal notranslate"><span class="pre">{GEN_TIME}</span></code> - Page generation time</p></li>
-</ul>
-<p><strong>Dynamic Templates</strong></p>
-<p>Templates can be made executable to generate dynamic content. If a template file has the executable bit set, it will be executed and its stdout used as the template content.</p>
-<p><strong>Icon Sets</strong></p>
-<p>By default, the page server uses Nerd Font icons. If you prefer simpler icons or your terminal does not support Nerd Fonts, you can enable Unicode icons instead:</p>
-<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>[pages]
-serve_nomadnet = yes
-unicode_icons = yes
-</pre></div>
-</div>
-<p><strong>Repository Statistics</strong></p>
-<p>When statistics recording is enabled (see the <code class="docutils literal notranslate"><span class="pre">record_stats</span></code> configuration option), the page server can display activity charts for each repository. The statistics page shows:</p>
-<ul class="simple">
-<li><p>Total and peak views, fetches and pushes</p></li>
-<li><p>Daily activity charts over a 90-day period</p></li>
-<li><p>Combined activity visualization</p></li>
-</ul>
-<p>To view statistics, a user must have the <code class="docutils literal notranslate"><span class="pre">s</span></code> (stats) permission for the repository. See the Access Configuration section for details on setting permissions.</p>
-<p><strong>Repository Thanks</strong></p>
-<p>The page server includes a “Thanks” feature that allows users to express appreciation for a repository. On each repository page, a “Thanks” link is displayed showing the current thanks count. Clicking this link registers a thank you for the repository.</p>
-<p><strong>Configuration Example</strong></p>
-<p>A complete page server configuration might look like this:</p>
-<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>[rngit]
-node_name = My Git Server
-announce_interval = 360
-record_stats = yes
-
-[repositories]
-public = /var/git/public
-internal = /var/git/internal
-
-[access]
-public = r:all
-internal = rw:9710b86ba12c42d1d8f30f74fe509286
-
-[pages]
-serve_nomadnet = yes
-unicode_icons = no
-</pre></div>
-</div>
+<p>For the full documentation on the <cite>rngit</cite> system, see the <a class="reference internal" href="git.html#git-main"><span class="std std-ref">Using Git Over Reticulum</span></a> chapter of this manual.</p>
</section>
<section id="the-rnx-utility">
<h3>The rnx Utility<a class="headerlink" href="#the-rnx-utility" title="Link to this heading">¶</a></h3>
@@ -1818,7 +1635,7 @@ systemctl --user enable rnsd.service
</aside>
</div>
-</div><script src="_static/documentation_options.js?v=ca842793"></script>
+</div><script src="_static/documentation_options.js?v=fd7cadf9"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
diff --git a/docs/manual/whatis.html b/docs/manual/whatis.html
index d6868c3f..cd6ee242 100644
--- a/docs/manual/whatis.html
+++ b/docs/manual/whatis.html
@@ -7,7 +7,7 @@
<link rel="prefetch" href="_static/rns_logo_512.png" as="image">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25.dev1 -->
- <title>What is Reticulum? - Reticulum Network Stack 1.2.1 documentation</title>
+ <title>What is Reticulum? - Reticulum Network Stack 1.2.2 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
@@ -180,7 +180,7 @@
</label>
</div>
<div class="header-center">
- <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.1 documentation</div></a>
+ <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.2 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
@@ -204,7 +204,7 @@
<img class="sidebar-logo" src="_static/rns_logo_512.png" alt="Logo"/>
</div>
- <span class="sidebar-brand-text">Reticulum Network Stack 1.2.1 documentation</span>
+ <span class="sidebar-brand-text">Reticulum Network Stack 1.2.2 documentation</span>
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
@@ -503,7 +503,7 @@ network, and vice versa.</p>
</aside>
</div>
-</div><script src="_static/documentation_options.js?v=ca842793"></script>
+</div><script src="_static/documentation_options.js?v=fd7cadf9"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
diff --git a/docs/manual/zen.html b/docs/manual/zen.html
index 38ebe1db..d172526b 100644
--- a/docs/manual/zen.html
+++ b/docs/manual/zen.html
@@ -7,7 +7,7 @@
<link rel="prefetch" href="_static/rns_logo_512.png" as="image">
<!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25.dev1 -->
- <title>Zen of Reticulum - Reticulum Network Stack 1.2.1 documentation</title>
+ <title>Zen of Reticulum - Reticulum Network Stack 1.2.2 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
@@ -180,7 +180,7 @@
</label>
</div>
<div class="header-center">
- <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.1 documentation</div></a>
+ <a href="index.html"><div class="brand">Reticulum Network Stack 1.2.2 documentation</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
@@ -204,7 +204,7 @@
<img class="sidebar-logo" src="_static/rns_logo_512.png" alt="Logo"/>
</div>
- <span class="sidebar-brand-text">Reticulum Network Stack 1.2.1 documentation</span>
+ <span class="sidebar-brand-text">Reticulum Network Stack 1.2.2 documentation</span>
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
@@ -675,7 +675,7 @@ Imagine a messaging app. You write it once. It works on a laptop connected to fi
</aside>
</div>
-</div><script src="_static/documentation_options.js?v=ca842793"></script>
+</div><script src="_static/documentation_options.js?v=fd7cadf9"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
diff --git a/docs/source/git.rst b/docs/source/git.rst
new file mode 100644
index 00000000..e6392caa
--- /dev/null
+++ b/docs/source/git.rst
@@ -0,0 +1,404 @@
+.. _git-main:
+
+************************
+Using Git Over Reticulum
+************************
+
+A set of utilities for distributed collaborative software development and publishing is included in RNS.
+
+The system consists of two parts: The ``rngit`` node that hosts repositories, and the ``git-remote-rns`` helper that enables Git to communicate with rngit nodes. As soon as you have RNS installed on your system, you can transparently use Git with Reticulum-hosted repositories just like any other type of remote. Git over Reticulum uses URLs in the following format: ``rns://DESTINATION_HASH/group/repo``.
+
+If you set a branch to track a Reticulum remote as the default upstream, you can simply use ``git`` as you normally would; all commands work transparently and as expected.
+
+.. warning::
+ **The rngit program is a new addition to RNS!** This functionality was introduced in RNS 1.2.0. While great care has been taken to design a secure, but highly configurable and flexible permission system for allowing many users to interact with many different repositories on a single node, ``rngit`` has not been tested extensively in the wild! Be careful when hosting repositories, especially if they are public or semi-public.
+
+The rngit Utility
+=================
+
+The ``rngit`` utility provides full Git repository hosting and interaction over Reticulum. It allows you to host and manage Git repositories and releases on Reticulum nodes, and to interact with remote repositories using standard Git commands through the ``rns://`` URL scheme.
+
+**Usage Examples**
+
+Run ``rngit`` to start a repository node:
+
+.. code:: text
+
+ $ rngit
+
+ [Notice] Starting Reticulum Git Node...
+ [Notice] Reticulum Git Node listening on <0d7334d411d00120cbad24edf355fdd2>
+
+On the first run, ``rngit`` will create a default configuration file. You will then need to edit this, to point to your repository locations, configure access permissions, and perform any other necessary configuration.
+
+View your identity and destination hashes:
+
+.. code:: text
+
+ $ rngit --print-identity
+
+ Git Peer Identity : <959e10e5efc1bd9d97a4083babe51dea>
+ Repository Node Identity : <153cb870b4665b8c1c348896292b0bad>
+ Repositories Destination : <0d7334d411d00120cbad24edf355fdd2>
+
+If the page server is enabled, the output will also include the Nomad Network destination hash.
+
+You can run ``rngit`` in service mode with logging to file:
+
+.. code:: text
+
+ $ rngit -s
+
+Clone a repository from a remote ``rngit`` node:
+
+.. code:: text
+
+ $ git clone rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
+
+Add a Reticulum remote to an existing repository:
+
+.. code:: text
+
+ $ git remote add some_remote rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
+
+Push changes to the Reticulum remote:
+
+.. code:: text
+
+ $ git push some_remote master
+
+Get changes from a remote repository:
+
+.. code:: text
+
+ $ git pull rns_remote master
+
+**All Command-Line Options (rngit)**
+
+.. code:: text
+
+ usage: rngit.py [-h] [--config CONFIG] [--rnsconfig RNSCONFIG] [-s] [-i] [-v]
+ [-q] [--version]
+
+ Reticulum Git Repository Node
+
+ options:
+ -h, --help show this help message and exit
+ --config CONFIG path to alternative config directory
+ --rnsconfig RNSCONFIG
+ path to alternative Reticulum config directory
+ -p, --print-identity print identity and destination info and exit
+ -s, --service rngit is running as a service and should log to file
+ -i, --interactive drop into interactive shell after initialisation
+ -v, --verbose increase verbosity
+ -q, --quiet decrease verbosity
+ --version show program's version number and exit
+
+**All Command-Line Options (git-remote-rns)**
+
+The ``git-remote-rns`` helper is automatically invoked by Git when interacting with ``rns://`` URLs. It is not typically run directly by users, but accepts the following environment variables for configuration:
+
+- ``RNGIT_CONFIG`` - Path to alternative client configuration directory
+- ``RNS_CONFIG`` - Path to alternative Reticulum configuration directory
+
+The client configuration file is located at ``~/.rngit/client_config`` and allows adjusting parameters such as the reference batch size for transfers.
+
+
+Repository Structure
+====================
+
+The ``rngit`` node organizes repositories into groups. Each group is a directory containing bare Git repositories. The repository path format is ``group_name/repo_name``. For example, a repository at ``/var/git/public/myrepo`` would be accessible as ``public/myrepo`` via the URL ``rns://DESTINATION_HASH/public/myrepo``.
+
+**Configuration**
+
+The ``rngit`` node configuration file is located at ``~/.rngit/config`` (or ``/etc/rngit/config`` for system-wide installations). The default configuration includes:
+
+- Repository group paths defining where to find bare repositories
+- Access permissions for groups and individual repositories
+- Announce intervals for network visibility
+- Optional statistics recording for repository activity
+
+Access permissions can be configured at the group level in the config file, or per-repository using ``.allowed`` files. Permissions use the format ``permission:target`` where permission is ``r`` (read), ``w`` (write), ``rw`` (read/write), ``c`` (create) or ``s`` (stats) and target is ``all``, ``none``, or a specific identity hash.
+
+The ``s`` (stats) permission allows viewing repository activity statistics, including views, fetches and pushes over time. To enable statistics recording, set ``record_stats = yes`` in the ``[rngit]`` section of the configuration file. You can also exclude specific identities from statistics by adding their hashes to ``stats_ignore_identities``.
+
+Repository-specific ``.allowed`` files can be static text files or executable scripts that output permission rules to stdout. A ``group.allowed`` file in a repository group directory applies to all repositories within that group.
+
+Serving Pages Over Nomad Network
+================================
+
+In addition to providing Git repository access via the Git remote helper protocol, ``rngit`` can also run a `Nomad Network <https://github.com/markqvist/nomadnet>`_ compatible page node. This allows users to browse repository information, view file contents, inspect commit history and access repository statistics through any Nomad Network client.
+
+When enabled, the page node provides a complete interface to your repositories, with automatic Markdown to Micron conversion, syntax-highlighted code browsing, and detailed commit, diff and statistics views.
+
+**Enabling the Git Page Node**
+
+To enable the page node, add the following to your ``~/.rngit/config`` file:
+
+.. code:: text
+
+ [pages]
+ serve_nomadnet = yes
+
+When the page node is enabled, ``rngit`` will listen on a Nomad Network node destination in addition to the Git repository destination. You can view the destination hash by running:
+
+.. code:: text
+
+ $ rngit --print-identity
+
+ Git Peer Identity : <959e10e5efc1bd9d97a4083babe51dea>
+ Repository Node Identity : <153cb870b4665b8c1c348896292b0bad>
+ Repositories Destination : <0d7334d411d00120cbad24edf355fdd2>
+ Nomad Network Destination : <50824b711717f97c2fb1166ceddd5ea9>
+
+**Accessing Repository Pages**
+
+Once the page server is running, you can access it from any Nomad Network client by connecting to the Nomad Network destination. The page node provides the following views:
+
+- **Front Page** - Lists all repository groups accessible to your identity
+- **Group Page** - Shows all repositories within a group
+- **Repository Page** - Displays repository overview, description and README
+- **Releases** - List of releases for the repository, with information and downloads
+- **File Browser** - Browse directory trees and view and download file contents
+- **Commits View** - View commit history with pagination
+- **Commit Details** - Detailed commit information with file changes and diffs
+- **Refs View** - List branches and tags
+- **Statistics** - Activity charts showing views, fetches and pushes over time
+
+All pages respect the same permission system used for Git access. If an identity does not have read access to a repository, they will not be able to view its pages.
+
+Formatting & Syntax Highlighting
+================================
+
+If the ``pygments`` Python module is installed on your system, the page server will automatically apply syntax highlighting to code files. The highlighting supports a wide range of programming languages and uses a color theme optimized for terminal display.
+
+To enable syntax highlighting, install pygments:
+
+.. code:: text
+
+ pip install pygments
+
+**Markdown & Micron Support**
+
+README files and other Markdown documents are automatically converted to Micron markup for display in Nomad Network clients. You can also write your README files directly in Micron, in which case they will display and render as such in any Nomad Network client. The file browser also supports viewing both rendered and raw Markdown and Micron documents.
+
+Code blocks in Markdown can include language hints for syntax highlighting:
+
+.. code:: text
+
+ ```python
+ def hello_world():
+ print("Hello, Reticulum!")
+ ```
+
+Customizing Templates
+=====================
+
+The page server uses a template system that allows complete customization of the generated pages. Templates are stored in the ``~/.rngit/templates/`` directory as Micron files.
+
+The following template files are supported:
+
+- ``base.mu`` - Base template wrapping all pages
+- ``front.mu`` - Front page listing all groups
+- ``group.mu`` - Group page listing repositories
+- ``repo.mu`` - Repository overview page
+- ``releases.mu`` - Release list page
+- ``release.mu`` - Release details page
+- ``tree.mu`` - File browser pages
+- ``blob.mu`` - File content display
+- ``commits.mu`` - Commit history listing
+- ``commit.mu`` - Individual commit detail page
+- ``refs.mu`` - Branches and tags listing
+- ``stats.mu`` - Statistics page
+
+Templates can include the following variables:
+
+- ``{PAGE_CONTENT}`` - The main content of the page (required)
+- ``{NODE_NAME}`` - The configured node name
+- ``{NAVIGATION}`` - Breadcrumb navigation links
+- ``{VERSION}`` - The rngit version number
+- ``{GEN_TIME}`` - Page generation time
+
+**Dynamic Templates**
+
+Templates can be made executable to generate dynamic content. If a template file has the executable bit set, it will be executed and its stdout used as the template content.
+
+**Icon Sets**
+
+By default, the page server uses Nerd Font icons. If you prefer simpler icons or your terminal does not support Nerd Fonts, you can enable Unicode icons instead:
+
+.. code:: text
+
+ [pages]
+ serve_nomadnet = yes
+ unicode_icons = yes
+
+**Repository Statistics**
+
+When statistics recording is enabled (see the ``record_stats`` configuration option), the page server can display activity charts for each repository. The statistics page shows:
+
+- Total and peak views, fetches and pushes
+- Daily activity charts over a 90-day period
+- Combined activity visualization
+
+To view statistics, a user must have the ``s`` (stats) permission for the repository. See the Access Configuration section for details on setting permissions.
+
+**Repository Thanks**
+
+The page server includes a "Thanks" feature that allows users to express appreciation for a repository. On each repository page, a "Thanks" link is displayed showing the current thanks count. Clicking this link registers a thank you for the repository.
+
+**Configuration Example**
+
+A complete page server configuration might look like this:
+
+.. code:: text
+
+ [rngit]
+ node_name = My Git Server
+ announce_interval = 360
+ record_stats = yes
+
+ [repositories]
+ public = /var/git/public
+ internal = /var/git/internal
+
+ [access]
+ public = r:all
+ internal = rw:9710b86ba12c42d1d8f30f74fe509286
+
+ [pages]
+ serve_nomadnet = yes
+ unicode_icons = no
+
+
+Release Management
+==================
+
+In addition to hosting Git repositories, ``rngit`` provides a complete release management system. This allows you to publish versioned releases with associated artifacts, release notes and metadata. Releases are managed through the ``rngit release`` subcommand, and are also viewable through the Nomad Network page interface.
+
+**The Release Workflow**
+
+Creating a release involves specifying a Git tag and a directory containing build artifacts or other files to distribute. The ``rngit`` client will open your configured ``$EDITOR`` to compose release notes, then upload all artifacts to the remote repository node.
+
+To create a release, specify the tag name and path to artifacts:
+
+.. code:: text
+
+ $ rngit release create rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo v1.2.0:./dist
+
+This will:
+
+1. Verify that the tag ``v1.2.0`` exists in the repository
+2. Open your editor to write release notes
+3. Upload all files from the ``./dist`` directory
+4. Publish the release
+
+If no ``$EDITOR`` environment variable is set, ``rngit`` will try to use ``nano``, ``vim`` or ``vi``. The editor will show a template with instructions. Lines starting with ``#`` will be ignored, and if the remaining content is empty after stripping comments, the release creation will be cancelled.
+
+**Release Storage & Structure**
+
+Releases are stored on the server in a directory named ``repo_name.releases`` next to the bare repository. Each release is a subdirectory containing:
+
+- ``META`` - Release metadata in ConfigObj format
+- ``RELEASE.md`` or ``RELEASE.mu`` - Release notes
+- ``artifacts/`` - All uploaded files
+- ``THANKS`` - Appreciation count from users
+
+**Listing Releases**
+
+To view all releases for a repository:
+
+.. code:: text
+
+ $ rngit release list rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
+
+ Tag Status Created Objs Notes
+ ------------------------------------------------------------------
+ v1.2.0 published 2025-01-15 14:32 3 Another release
+ v1.1.0 published 2024-12-03 09:15 2 Bug fix release
+ v1.0.0 published 2024-10-20 16:45 2 Initial release
+
+**Viewing Release Details**
+
+To see full information about a specific release:
+
+.. code:: text
+
+ $ rngit release view rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo v1.2.0
+
+ Release : 0.9.2
+ Status : published
+ Created : 2026-05-04 23:53:09
+ Thanks : 5
+
+ Release Notes
+ =============
+
+ Version 1.2.0 release notes...
+
+ Artifacts (4)
+ =============
+ - myapp-1.2.0.tar.gz (1.5 MB)
+ - myapp-1.2.0.zip (1.6 MB)
+ - checksums.txt (256 B)
+
+**Deleting Releases**
+
+To remove a release:
+
+.. code:: text
+
+ $ rngit release delete rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo v1.2.0
+
+ Are you sure you want to delete release 'v1.2.0'? [y/N]: y
+ Release v1.2.0 deleted
+
+**Requirements & Validation**
+
+- The specified tag must exist in the remote repository
+- You must have ``release`` permission for the repository
+- The target artifacts directory must exist and contain at least one file
+- Release notes cannot be empty
+
+**Permissions**
+
+Release management requires the ``release`` permission, configured the same way as other repository permissions. In the config file or ``.allowed`` files, use ``rel:target`` to grant release management rights:
+
+.. code:: text
+
+ # In .allowed file or config
+ rel:all # Allow everyone
+ rel:9710b86... # Allow specific identity
+ rel:none # Deny everyone
+
+**Nomad Network Interface**
+
+When the Nomad Network page server is enabled, releases are displayed on a dedicated releases page for each repository. Each release is listed with its tag, creation date, artifact count and a preview of the release notes. Clicking a release shows the full details including formatted release notes and a listing of all artifacts with their sizes.
+
+Only releases with ``published`` status are visible through the Nomad Network interface. Draft releases (if supported in future implementations) would only be visible through the command-line interface.
+
+**All Command-Line Options (rngit release)**
+
+.. code:: text
+
+ usage: rngit release [-h] [--config CONFIG] [--rnsconfig RNSCONFIG]
+ [-i IDENTITY] [-v] [-q] [--version]
+ operation repository [target]
+
+ Reticulum Git Release Manager
+
+ positional arguments:
+ operation list, view, create or delete
+ repository URL of remote repository (rns://hash/group/repo)
+ target tag or tag:path for create, tag for view/delete
+
+ options:
+ -h, --help show this help message and exit
+ --config CONFIG path to alternative config directory
+ --rnsconfig RNSCONFIG
+ path to alternative Reticulum config directory
+ -i IDENTITY, --identity IDENTITY
+ path to release identity
+ -v, --verbose increase verbosity
+ -q, --quiet decrease verbosity
+ --version show program's version number and exit
\ No newline at end of file
diff --git a/docs/source/index.rst b/docs/source/index.rst
index 0d70d950..fae99d4d 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -27,6 +27,7 @@ to participate in the development of Reticulum itself.
hardware
interfaces
networks
+ git
support
examples
license
diff --git a/docs/source/using.rst b/docs/source/using.rst
index 98498dd1..6a99b7e4 100644
--- a/docs/source/using.rst
+++ b/docs/source/using.rst
@@ -683,258 +683,16 @@ another one, which will be created if it does not already exist
The rngit Utility
=================
-The ``rngit`` utility provides full Git repository hosting and interaction over Reticulum. It allows you to host Git repositories on Reticulum nodes, and to interact with remote repositories using standard Git commands through the ``rns://`` URL scheme.
+The ``rngit`` utility provides full Git repository hosting and interaction over Reticulum, as well as many other useful features for software development, collaboration and publishing. It allows you to host Git repositories on Reticulum nodes, interact with remote repositories using standard Git commands through the ``rns://`` URL scheme, and to publish software releases.
-The system consists of two parts: The ``rngit`` node that hosts repositories, and the ``git-remote-rns`` helper that enables Git to communicate with rngit nodes. As soon as you have RNS installed on your system, you can transparently use Git with Reticulum-hosted repositories just like any other type of remote. Git over Reticulum uses URLs in the following format: ``rns://DESTINATION_HASH/group/repo``.
+The system consists of two parts: The ``rngit`` node that hosts and manages repositories, and the ``git-remote-rns`` helper that enables Git to communicate with rngit nodes. As soon as you have RNS installed on your system, you can transparently use Git with Reticulum-hosted repositories just like any other type of remote. Git over Reticulum uses URLs in the following format: ``rns://DESTINATION_HASH/group/repo``.
If you set a branch to track a Reticulum remote as the default upstream, you can simply use ``git`` as you normally would; all commands work transparently and as expected.
.. warning::
**The rngit program is a new addition to RNS!** This functionality was introduced in RNS 1.2.0. While great care has been taken to design a secure, but highly configurable and flexible permission system for allowing many users to interact with many different repositories on a single node, ``rngit`` has not been tested extensively in the wild! Be careful when hosting repositories, especially if they are public or semi-public.
-**Usage Examples**
-
-Run ``rngit`` to start a repository node:
-
-.. code:: text
-
- $ rngit
-
- [Notice] Starting Reticulum Git Node...
- [Notice] Reticulum Git Node listening on <0d7334d411d00120cbad24edf355fdd2>
-
-On the first run, ``rngit`` will create a default configuration file. You will then need to edit this, to point to your repository locations, configure access permissions, and perform any other necessary configuration.
-
-View your identity and destination hashes:
-
-.. code:: text
-
- $ rngit --print-identity
-
- Git Peer Identity : <959e10e5efc1bd9d97a4083babe51dea>
- Repository Node Identity : <153cb870b4665b8c1c348896292b0bad>
- Repositories Destination : <0d7334d411d00120cbad24edf355fdd2>
-
-If the page server is enabled, the output will also include the Nomad Network destination hash.
-
-You can run ``rngit`` in service mode with logging to file:
-
-.. code:: text
-
- $ rngit -s
-
-Clone a repository from a remote ``rngit`` node:
-
-.. code:: text
-
- $ git clone rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
-
-Add a Reticulum remote to an existing repository:
-
-.. code:: text
-
- $ git remote add some_remote rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
-
-Push changes to the Reticulum remote:
-
-.. code:: text
-
- $ git push some_remote master
-
-Get changes from a remote repository:
-
-.. code:: text
-
- $ git pull rns_remote master
-
-**Repository Structure**
-
-The ``rngit`` node organizes repositories into groups. Each group is a directory containing bare Git repositories. The repository path format is ``group_name/repo_name``. For example, a repository at ``/var/git/public/myrepo`` would be accessible as ``public/myrepo`` via the URL ``rns://DESTINATION_HASH/public/myrepo``.
-
-**Configuration**
-
-The ``rngit`` node configuration file is located at ``~/.rngit/config`` (or ``/etc/rngit/config`` for system-wide installations). The default configuration includes:
-
-- Repository group paths defining where to find bare repositories
-- Access permissions for groups and individual repositories
-- Announce intervals for network visibility
-- Optional statistics recording for repository activity
-
-Access permissions can be configured at the group level in the config file, or per-repository using ``.allowed`` files. Permissions use the format ``permission:target`` where permission is ``r`` (read), ``w`` (write), ``rw`` (read/write), ``c`` (create) or ``s`` (stats) and target is ``all``, ``none``, or a specific identity hash.
-
-The ``s`` (stats) permission allows viewing repository activity statistics, including views, fetches and pushes over time. To enable statistics recording, set ``record_stats = yes`` in the ``[rngit]`` section of the configuration file. You can also exclude specific identities from statistics by adding their hashes to ``stats_ignore_identities``.
-
-Repository-specific ``.allowed`` files can be static text files or executable scripts that output permission rules to stdout. A ``group.allowed`` file in a repository group directory applies to all repositories within that group.
-
-**All Command-Line Options (rngit)**
-
-.. code:: text
-
- usage: rngit.py [-h] [--config CONFIG] [--rnsconfig RNSCONFIG] [-s] [-i] [-v]
- [-q] [--version]
-
- Reticulum Git Repository Node
-
- options:
- -h, --help show this help message and exit
- --config CONFIG path to alternative config directory
- --rnsconfig RNSCONFIG
- path to alternative Reticulum config directory
- -p, --print-identity print identity and destination info and exit
- -s, --service rngit is running as a service and should log to file
- -i, --interactive drop into interactive shell after initialisation
- -v, --verbose increase verbosity
- -q, --quiet decrease verbosity
- --version show program's version number and exit
-
-**All Command-Line Options (git-remote-rns)**
-
-The ``git-remote-rns`` helper is automatically invoked by Git when interacting with ``rns://`` URLs. It is not typically run directly by users, but accepts the following environment variables for configuration:
-
-- ``RNGIT_CONFIG`` - Path to alternative client configuration directory
-- ``RNS_CONFIG`` - Path to alternative Reticulum configuration directory
-
-The client configuration file is located at ``~/.rngit/client_config`` and allows adjusting parameters such as the reference batch size for transfers.
-
-**Serving Pages Over Nomad Network**
-
-In addition to providing Git repository access via the Git remote helper protocol, ``rngit`` can also run a `Nomad Network <https://github.com/markqvist/nomadnet>`_ compatible page node. This allows users to browse repository information, view file contents, inspect commit history and access repository statistics through any Nomad Network client.
-
-When enabled, the page node provides a complete interface to your repositories, with automatic Markdown to Micron conversion, syntax-highlighted code browsing, and detailed commit, diff and statistics views.
-
-**Enabling the Git Page Node**
-
-To enable the page node, add the following to your ``~/.rngit/config`` file:
-
-.. code:: text
-
- [pages]
- serve_nomadnet = yes
-
-When the page node is enabled, ``rngit`` will listen on a Nomad Network node destination in addition to the Git repository destination. You can view the destination hash by running:
-
-.. code:: text
-
- $ rngit --print-identity
-
- Git Peer Identity : <959e10e5efc1bd9d97a4083babe51dea>
- Repository Node Identity : <153cb870b4665b8c1c348896292b0bad>
- Repositories Destination : <0d7334d411d00120cbad24edf355fdd2>
- Nomad Network Destination : <50824b711717f97c2fb1166ceddd5ea9>
-
-**Accessing Repository Pages**
-
-Once the page server is running, you can access it from any Nomad Network client by connecting to the Nomad Network destination. The page node provides the following views:
-
-- **Front Page** - Lists all repository groups accessible to your identity
-- **Group Page** - Shows all repositories within a group
-- **Repository Page** - Displays repository overview, description and README
-- **File Browser** - Browse directory trees and view file contents
-- **Commits View** - View commit history with pagination
-- **Commit Details** - Detailed commit information with file changes and diffs
-- **Refs View** - List branches and tags
-- **Statistics** - Activity charts showing views, fetches and pushes over time
-
-All pages respect the same permission system used for Git access. If an identity does not have read access to a repository, they will not be able to view its pages.
-
-**Syntax Highlighting**
-
-If the ``pygments`` Python module is installed on your system, the page server will automatically apply syntax highlighting to code files. The highlighting supports a wide range of programming languages and uses a color theme optimized for terminal display.
-
-To enable syntax highlighting, install pygments:
-
-.. code:: text
-
- pip install pygments
-
-**Markdown & Micron Support**
-
-README files and other Markdown documents are automatically converted to Micron markup for display in Nomad Network clients. You can also write your README files directly in Micron, in which case they will display and render as such in any Nomad Network client. The file browser also supports viewing both rendered and raw Markdown and Micron documents.
-
-Code blocks in Markdown can include language hints for syntax highlighting:
-
-.. code:: text
-
- ```python
- def hello_world():
- print("Hello, Reticulum!")
- ```
-
-**Customizing Templates**
-
-The page server uses a template system that allows complete customization of the generated pages. Templates are stored in the ``~/.rngit/templates/`` directory as Micron files.
-
-The following template files are supported:
-
-- ``base.mu`` - Base template wrapping all pages (must include ``{PAGE_CONTENT}``)
-- ``front.mu`` - Front page listing all groups
-- ``group.mu`` - Group page listing repositories
-- ``repo.mu`` - Repository overview page
-- ``tree.mu`` - File browser pages
-- ``blob.mu`` - File content display
-- ``commits.mu`` - Commit history listing
-- ``commit.mu`` - Individual commit detail page
-- ``refs.mu`` - Branches and tags listing
-- ``stats.mu`` - Statistics page
-
-Templates can include the following variables:
-
-- ``{PAGE_CONTENT}`` - The main content of the page (required)
-- ``{NODE_NAME}`` - The configured node name
-- ``{NAVIGATION}`` - Breadcrumb navigation links
-- ``{VERSION}`` - The rngit version number
-- ``{GEN_TIME}`` - Page generation time
-
-**Dynamic Templates**
-
-Templates can be made executable to generate dynamic content. If a template file has the executable bit set, it will be executed and its stdout used as the template content.
-
-**Icon Sets**
-
-By default, the page server uses Nerd Font icons. If you prefer simpler icons or your terminal does not support Nerd Fonts, you can enable Unicode icons instead:
-
-.. code:: text
-
- [pages]
- serve_nomadnet = yes
- unicode_icons = yes
-
-**Repository Statistics**
-
-When statistics recording is enabled (see the ``record_stats`` configuration option), the page server can display activity charts for each repository. The statistics page shows:
-
-- Total and peak views, fetches and pushes
-- Daily activity charts over a 90-day period
-- Combined activity visualization
-
-To view statistics, a user must have the ``s`` (stats) permission for the repository. See the Access Configuration section for details on setting permissions.
-
-**Repository Thanks**
-
-The page server includes a "Thanks" feature that allows users to express appreciation for a repository. On each repository page, a "Thanks" link is displayed showing the current thanks count. Clicking this link registers a thank you for the repository.
-
-**Configuration Example**
-
-A complete page server configuration might look like this:
-
-.. code:: text
-
- [rngit]
- node_name = My Git Server
- announce_interval = 360
- record_stats = yes
-
- [repositories]
- public = /var/git/public
- internal = /var/git/internal
-
- [access]
- public = r:all
- internal = rw:9710b86ba12c42d1d8f30f74fe509286
-
- [pages]
- serve_nomadnet = yes
- unicode_icons = no
+For the full documentation on the `rngit` system, see the :ref:`Using Git Over Reticulum<git-main>` chapter of this manual.
The rnx Utility
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────